首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在我的add函数之外,无法从链表的头部计算数据

在我的add函数之外,无法从链表的头部计算数据
EN

Stack Overflow用户
提问于 2013-06-04 17:20:07
回答 1查看 138关注 0票数 0

因此,我一直在自学链表,并尝试为它们编写一些非常基本的函数。基本上我一直在做的就是

代码语言:javascript
运行
复制
struct ListNode{
int data;
ListNode *next
};

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

代码语言:javascript
运行
复制
void addToList(int numberToAdd, struct ListNode *headOfList){
ListNode *newItem=new ListNode;
newItem->data=numberToAdd;
if(headOfList==NULL){
    newItem->next=NULL;
    headOfList=newItem;
}}

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

代码语言:javascript
运行
复制
ListNode *head=NULL;

在我的main函数中。我遇到的问题是在我做完我的

代码语言:javascript
运行
复制
addToList(someRandomNumber,head);

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

代码语言:javascript
运行
复制
cout<<head->data;

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

代码语言:javascript
运行
复制
cout<<headOfList->data; 

它工作得非常好。为何会这样呢?

EN

回答 1

Stack Overflow用户

发布于 2013-06-04 17:37:23

当您将headList参数传递给addToList时,实际上是在传递该参数的副本headOfListhead是独立的指针。这意味着,当您修改函数内的头指针以指向其他任何内容并返回时,head指针仍然是未修改的(指向NULL)。执行cout<<head->data;时,将取消对空指针的引用。(head->data等于(*head).data。)

这种情况下的解决方案是添加另一个间接级别,即传递一个指向ListNode的指针的指针,正如Shafik所解释的那样:

代码语言:javascript
运行
复制
addToList(someRandomNumber, &head);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16914081

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档