【发布时间】:2019-07-18 15:39:06
【问题描述】:
我是编程新手。我只是想知道为什么这不起作用。 我对指针的理解不是很清楚,尤其是在跨函数使用指针时。
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的值是多少?
-
第二个
append函数在您的问题中无法编译,因为last没有在任何地方声明。
标签: c linked-list append singly-linked-list