如何访问链表的空指针(节点)?

Hid*_*yen -1 c linked-list append singly-linked-list function-definition

此方法应该在链接列表的末尾附加一个节点。该方法循环直到到达末尾,即空指针。但是当我尝试将空指针更改为一个值时,它崩溃了。我应该如何解决这个问题?(节点指针有一个整数数据和另一个当前节点指向的节点变量)。

void appendItem(LinkedList* list, int value)
{
    Node* temp = (Node*)malloc(sizeof(Node));
    temp = list->head;

    while(temp != NULL)
    {
        temp = temp->next;
    }

    temp->data = value;
    temp->next = NULL;
}
Run Code Online (Sandbox Code Playgroud)

Mik*_*CAT 5

NULL禁止取消引用。

取而代之的是,您应该管理一个指向应该更改的内容的指针。

还要注意,通过分配一些缓冲区malloc()并在之后用另一个值覆盖结果会导致内存泄漏。

还有一点是,malloc()家庭的铸造结果被认为是一种不好的做法

固定代码:

void appendItem(LinkedList* list, int value)
{
    Node** temp = &list->head;

    while(*temp != NULL)
    {
        temp = &(*temp)->next;
    }

    *temp = malloc(sizeof(Node));
    if (*temp != NULL)
    {
        (*temp)->data = value;
        (*temp)->next = NULL;
    }
}
Run Code Online (Sandbox Code Playgroud)