我有兩種從頭開始插入節點的方法。第一個工作,而第二個不工作。你能解釋我爲什麼嗎?鏈接列表:從頭開始插入
(名單已經有一些元素和頭部是鏈表的頭節點)
而且我喜歡這個
list *head = new list;
void push(list **head, int info)
{
list *node=new list;
node->data=info;
node->next=*head;
*head=node;
}
push(&head,5);
和下一個初始化頭是
void push(list *head, int info)
{
list *node=new list;
node->data=info;
node->next=head;
head=node;
}
push(head,5);
你是什麼意思與「不工作」?你的第二個按值傳遞'head'指針,所以'head = node'不會有任何效果,是不是你的意思? – user463035818
在第二種情況下,您傳遞'head'(它是一個指針),但不傳遞它的地址。因此,'head'在'push()'中本地「變化,而不是在」原始「'head'上變化。 – Scheff
默認參數通過值*傳遞*,這意味着它們被複制。現在,如果您修改副本,原件不會更改,對嗎?那麼當你在第二個函數中修改變量的* copy *('head')時,你會怎麼想呢? –