【发布时间】:2021-05-07 19:30:54
【问题描述】:
我正在通过 dsa 双循环列表,并且正在练习向其中插入元素,在输入第一个元素后,我的程序突然结束......我的 insertafterfunction 中是否有错误。我得到一个分段错误错误。只是帮我解决我找不到问题所在..
#include<iostream>
struct Node{
int data;
Node* next;
Node* prev;
};
Node* headnode;
void insert(int data){
Node* newnode = new Node;
newnode->data= data;
newnode->next=headnode;
newnode->prev=headnode;
headnode=newnode;
}
void insertafter(int data){
Node* newnode=new Node;
newnode->data=data;
newnode->next=headnode;
Node* existingnode = headnode;
while(existingnode->next!=headnode){
existingnode=existingnode->next;
}
existingnode->next=newnode;
newnode->prev= existingnode;
headnode->prev=newnode;
}
void printnode(){
Node* newnode=headnode;
while (newnode->next!=headnode){
std::cout<<newnode->data<<"->";
newnode=newnode->next;
}
std::cout<<"\n";
}
int main(){
headnode=NULL;
int x,data;
std::cin>>x;
for(int i=0;i<x;i++)
{
std::cin>>data;
if(i==0)
{
insert(data);
}
else
{
insertafter(data);
}
printnode();
}
}
【问题讨论】:
标签: c++ data-structures doubly-linked-list circular-list