gpt4 book ai didi

c++ - 将链表的头部传递给函数时。为什么我们需要通过引用传递它,例如在 push(node* &head, int key)

转载 作者:太空狗 更新时间:2023-10-29 20:04:09 25 4
gpt4 key购买 nike

打印出head和&head的地址:头:0x603050&head :0x7fffffffe4b8: 这是什么意思?

void push(node* &head,int key)// Inserts items at front of link list
{
node* linkNode=new node(); //declares new node
linkNode->data=key;
if(head==NULL) //if the link list is empty then create a new one.
{
linkNode->next=NULL;
head=linkNode; //1
}
else
{
linkNode->next=head;
head=linkNode;
}
}

调用所有其他函数的主函数链接列表是 8,4,2主要功能

int main(int argc, char** argv) 
{
node* head=NULL; //initializing head to NULL
push(head,2); //creating link list
push(head,4); //this requires &head
push(head,8); //link list is 8,4,2
selectSort(head); //this does not require &head
reverse(head); //this requires &head
return 0;
}

最佳答案

Why do we need to pass it by reference of reference such as in push(node* &head, int key)

否则,将给定的 linkNode 设置为当前 head 将不起作用:

    if(head==NULL)             //if the link list is empty then create a new one.
{
linkNode->next=NULL;
head=linkNode; // <- This statement changes the head variable passed from main()
}

您拥有的是对指针(head)的引用,该指针将从 push() 函数“返回”,并且正确设置调用者传递的 head 指针:

node* head=NULL;
push(head,2); // sets head to the node created for key '2'

不要忘记删除您使用new node(); 创建的所有node 实例。在您展示的不同上下文中,这可能会导致内存泄漏。

关于c++ - 将链表的头部传递给函数时。为什么我们需要通过引用传递它,例如在 push(node* &head, int key),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22000190/

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