gpt4 book ai didi

c++ - 无法从我的添加函数之外的链表头部计算数据

转载 作者:行者123 更新时间:2023-11-28 07:35:04 26 4
gpt4 key购买 nike

所以我一直在自学链表,并一直在尝试为它们编写一些非常基本的函数。基本上我一直在使用的东西

struct ListNode{
int data;
ListNode *next
};

我正在尝试制作一个将数字添加到列表中的函数,到目前为止我得到的是

void addToList(int numberToAdd, struct ListNode *headOfList){
ListNode *newItem=new ListNode;
newItem->data=numberToAdd;
if(headOfList==NULL){
newItem->next=NULL;
headOfList=newItem;
}}

到目前为止,我只尝试将单个 ListNode 添加到声明为

的空列表中
ListNode *head=NULL;

在我的主要功能中。我遇到的问题是在我完成

addToList(someRandomNumber,head);

如果我这样做,我会得到一个错误,

cout<<head->data;

但是如果我进入我的 addToList 函数并执行

cout<<headOfList->data; 

它工作得很好。为什么会这样?

最佳答案

headOfLst 正在按值传递,因此当您修改变量时,它不会反射(reflect)在 main 中:

void addToList(int numberToAdd, struct ListNode *headOfList){
^^^^^^^^^^^^

如果你传递它有一个双指针,你将能够修改指针本身:

void addToList(int numberToAdd, struct ListNode **headOfList){

那么稍后的分配将是:

*headOfList=newItem;

编辑

main 中的调用应该修改为:

addtolist(1,&head);

另一种选择是传递对指针的引用:

void addToList(int numberToAdd, struct ListNode *& headOfList){
^

在这种情况下无需修改其他代码。

关于c++ - 无法从我的添加函数之外的链表头部计算数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16914081/

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