c++ - 在双向链表的末尾插入
问题描述
**以下是我的链表代码...由于某种原因它无法正常工作。有人可以帮我吗?
void insertAtTheEnd(node *&head, int data){
node *newNode= new node(data);
newNode->data=data;
node *temp=head;
while(temp!=NULL){
temp=temp->next;
}
temp->next=newNode;
newNode->next=NULL;
newNode->prev=temp->next;
}
解决方案
当您对其进行编码时,temp
当您的 while 循环退出时,它保证为 NULL。因此,temp->next=NULL
会崩溃。
当您探测列表中的位置时,您通常需要保留“上一个”变量以指向您正在迭代的项目之前的项目。
node* temp = head->next;
node* previous = head;
while (temp)
{
previous = temp;
temp = temp->next;
}
// when the while loop returns, `previous` is the last element in the list
previous->next = newNode;
newNode->prev = previous;
newNode->next = nullptr;
您在代码中缺少的另一种情况。何时head
为 NULL(空列表),您需要更新head
为您的newNode
// empty list - return the new node as head
if (head == nullptr)
{
newNode->next = nullptr;
newNode->prev = nullptr;
head = newNode;
return;
}
推荐阅读
- powerbi - 在 Power BI DAX 查询中使用 FIFO 方法计算问题股票利润
- swiftui - 如何在 WatchOS 上的 SwiftUI 中为图像添加选取器
- json - 使用输入文本文件在 vs 代码中调试 python 文件
- reactjs - 无法在 React 中使用 Highchart 直方图
- apache-spark - 缺少必需的配置“partition.assignment.strategy”
- ethereum - 如何在智能合约中使用 swapExactETHForTokens?
- kubernetes - K8 使用大写镜像名称创建 pod
- java - 为什么Java中的最后一个地图元素不断重复
- python - filenotfound 错误 - chromedriver(网页抓取)
- python - 我们如何在python中使列表中的重复值唯一?