我无法通过输入记录的电话号码从链接列表中删除节点。这是应该执行此操作的代码:
typedef struct record
{
char name[20];
char surname[20];
char telephone[20];
}Record;
typedef struct node
{
Record data;
struct node *next;
}Node;
Node *head = NULL;
void delete() {
Node *n = head;
Node* previous = NULL;
Node *next = n;
。 。 。 (这里我写了输入数字的代码(存储在telNumber [20]中)并找到包含数字的记录
while (n != NULL) {
if (&n->data.telephone == telNumber) {
if (previous == NULL) {
n = n->next;
free(head);
}
else {
previous->next = n->next;
free(n);
n = previous->next;
}
}
else {
previous = n;
n = n->next;
}
}
printf("You have successfully deleted the telephone record");
记录仍然存在。
答案 0 :(得分:0)
此:
if (&n->data.telephone == telNumber)
不是如何在C中比较字符串的相等性。这将比较永远不会匹配的地址。
应该是:
if (strcmp(n->data.telephone, telNumber) == 0)