gpt4 book ai didi

c - 使用双指针访问链表的节点

转载 作者:行者123 更新时间:2023-12-04 04:43:19 24 4
gpt4 key购买 nike

我正在尝试在链表中添加节点,传递指针指针,访问成员 (*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);
}

最佳答案

您不应该取消对 NULL 指针的引用,否则会按预期获得 Seg Fault。

这是问题所在:

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

关于c - 使用双指针访问链表的节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18570501/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com