如何解决在双向链表的末尾插入
**以下是我的链表代码... 由于某种原因它不工作。有人可以帮我吗?
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;
}
解决方法
正如您所编码的那样,当您的 while 循环退出时,temp
保证为 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;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。