gpt4 book ai didi

c - 为什么我的代码没有向这个链表中插入一个新节点?

转载 作者:太空宇宙 更新时间:2023-11-04 01:16:31 28 4
gpt4 key购买 nike

我是编程新手。我只是想知道为什么这不起作用。我对指针的理解不清楚,尤其是在跨函数使用指针时。

void append(struct Node** head_ref, float new_data)
{

struct Node* new_node = (struct Node*) malloc(sizeof(struct Node));

struct Node *last = *head_ref; /* used in step 5*/


new_node->data = new_data;
new_node->next = NULL;

while (last != NULL)
last = last->next;


last = new_node;
return;
}

void append(struct Node** head_ref, float new_data)
{

while (last->next != NULL)
last = last->next;


last->next = new_node;
return;
}

在第一个函数中没有包含新数据,我只得到原始链表。

但是第二个函数工作得很好。在链表开头插入新节点时,双指针如何工作? (看到这个问题的答案了,还是一头雾水)

最佳答案

在第一个示例中,您将指针移动到 last 直到它指向 NULL 位置。然后,将指针设置为 new_node。但是,此时 last 与您的链表没有真正的关联。它只是指向一些内存的指针。在第二个示例(正确的示例)中,您迭代直到到达链表的尾部,其中该节点的 nextNULL。然后,将 next 设置为 new_node。列表现在有一个新的尾部,即 new_node

关于c - 为什么我的代码没有向这个链表中插入一个新节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57098190/

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