C 使用函数调用的链表插入问题

C 使用函数调用的链表插入问题,c,C,当我们借助函数调用在链接列表中插入一个元素时,为什么需要传递head的引用而不是直接传递head?例如,我们使用void push(结构节点**head\u ref,int new\u data)而不是void push(结构节点*head,int new\u data)..其中push是插入元素的函数。您没有提供足够的关于push函数的信息来确定函数参数是这样的确切原因(即,它是在末尾插入元素,还是在开头插入元素?) 将指针传递给指针的主要原因之一是,如果头指针发生更改,并且您希望在函数调用后

当我们借助函数调用在链接列表中插入一个元素时,为什么需要传递head的引用而不是直接传递head?例如,我们使用void push(结构节点**head\u ref,int new\u data)而不是void push(结构节点*head,int new\u data)..其中push是插入元素的函数。

您没有提供足够的关于push函数的信息来确定函数参数是这样的确切原因(即,它是在末尾插入元素,还是在开头插入元素?)

将指针传递给指针的主要原因之一是,如果头指针发生更改,并且您希望在函数调用后保留更改

关于插入函数为什么具有这种参数结构,我可以想到两种可能性

如果push函数在列表末尾插入,则为插入函数提供一个空列表(在本例中为空指针),指向head的指针将从空指针更改为插入的单个元素的地址,该元素现在是head

如果每次在头部插入推送功能,则头部节点的地址会不断变化

例如,在以下链接列表中,头指针指向包含1的节点:

1->2->3->4

将数据元素5推到前面后,链表表示形式如下所示:

5->1->2->3->4


所以5现在是头指针应该指向的地方。但是,如果push函数的参数结构为
void push(struct node*head\u ref,int new\u data)
,则head\u ref在退出函数后仍将指向包含1的节点。但是,使用
void push(结构节点**head\u ref,int new\u data)
当前
header\u ref位置的更改存储在指向它的指针中。

不确定引用,我假设原因是
head
本身需要更新。需要完整的代码才能给出明确的答案