找到后,从链表中删除节点

时间:2016-04-20 12:59:17

标签: c pointers struct linked-list nodes

我无法通过输入记录的电话号码从链接列表中删除节点。这是应该执行此操作的代码:

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");

记录仍然存在。

1 个答案:

答案 0 :(得分:0)

此:

if (&n->data.telephone == telNumber)

不是如何在C中比较字符串的相等性。这将比较永远不会匹配的地址。

应该是:

if (strcmp(n->data.telephone, telNumber) == 0)