2

我正在尝试在链表中添加节点,传递指针的指针,访问成员 (*list) -> next 给出了分段错误。谁能指出错误,提前谢谢。代码是

void initializeList (node ** head, int data)
{
    *head = malloc (sizeof (node));
    (*head)-> member = data;
    (*head)-> next = NULL;
}

void addNode(node ** list, int data)
{
    node * newNode = NULL;
    newNode = malloc (sizeof (node));
    while (*list->next!= NULL) 
    {
        *list= (*list) -> next;
    }
    newNode -> member = data;
    newNode -> next = NULL;
    (*list) -> next = newNode;
}

void main ()
{
    node * head = NULL;
    initializeList (&head, 5);
    addNode(&head, 6);
}
4

2 回答 2

3

你不应该取消引用一个 NULL 指针,否则你会得到 Seg Fault。

这是问题所在:

while (*list != NULL)
    {
    *list= (*list) -> next;
    }
newNode -> member = data;
newNode -> next = NULL;
(*list) -> next = newNode;

*list在 while 循环后为 NULL。
而你正在做(*list) -> next = newNode;

于 2013-09-02T10:09:32.817 回答
0

newNode 在循环后指向 NULL 你不能设置它的成员和下一个值使用 while(*list->next!= NULL)

这确保您不会取消引用 NULL

于 2013-09-02T14:51:08.957 回答