c++ - 这个链表遍历有什么问题?
问题描述
我必须解决一个简单的问题,我已经获得了链表的头节点,并且我必须将指针返回到最后一个节点。
这里有两个实现:
这个不起作用(我尝试了 leetcode 和 geekforgeeks),它会导致 SEGMENTATION FAULT:
node* traversal(node* head){
node* temp=head;
while(temp!=NULL) temp=temp->next;
return temp;
}
这个工作得很好:
node* traversal(node* head){
node *tail,*temp=head;
while(temp!=NULL){
tail=temp;
temp=temp->next;
}
return tail;
}
请告诉我第一个代码有什么问题,因为根据我的说法,两个代码都是相同的....但是第一个总是给出 SEGMENTATION FAULT
解决方案
第一个代码块中的问题是: moment loop will break temp 指向 NULL 并且返回相同的指针,即指向最后一个节点的指针。
当循环迭代器即 temp 移动到最后一个节点的下一个节点时,需要一个引用指针来存储最后一个节点引用,这意味着 temp 具有 NULL 值,然后函数被返回。
为了解决这两个变量将需要以获取链接列表的最后一个节点:
node *tail; // to assign the reference
node *next = head; // to iterate through the link list.
推荐阅读
- google-sheets - 使用间接公式引用另一张纸
- c++ - 在 Sublime Text 中使用库
- reactjs - React Redux Firebase 在身份验证后刷新之前不加载道具
- java - java spring boot中的输入验证模式
- c# - 如何根据类数据类型分支代码
- python - 如何在不覆盖子实例的情况下使用自己的实例变量调用父类的函数?
- angular - MatDialog 关闭前一个对话框时打开下一个对话框 - forLoop 或流
- james - Apache James - 电子邮件已发送但无法获取
- excel - 组合框,我如何从通过 listobject 检索的列表中排除空白
- c# - 如何在不显示物理路径的情况下显示文件夹中的文件?