gpt4 book ai didi

c++ - 我在执行这个程序时得到 "segmentation fault"

转载 作者:行者123 更新时间:2023-11-28 00:39:46 25 4
gpt4 key购买 nike

这是一段用c++实现单向链表的代码。执行插入、删除和显示三个基本操作。数据是从主函数传递过来的。代码得到遵守,但在执行过程中显示“段错误”。请告诉我代码有什么问题。

#include<iostream>
using namespace std;
class list
{
private:
typedef struct node
{
int data;`
node* next;
}* nodeptr;
nodeptr head;
nodeptr curr;
nodeptr temp;
public:
list();
void insert(int addData);
void delet(int delData);
void display();
};
list::list()
{
head=NULL;
curr=NULL;
temp=NULL;
}
void list::insert(int addData)
{
nodeptr n=new node;
n->next=NULL;
n->data=addData;
if(head!=NULL)
{
curr=head;
while(curr!=NULL)
{
curr=curr->next;
}
curr->next=n;
}
else
{
head=n;
}
}
void list::delet(int delData)
{
nodeptr delptr=NULL;
temp=head;
curr=head;
while(curr!=NULL&&curr->data!=delData)
{
temp=curr;
curr=curr->next;
}
if(curr==NULL)
{
cout<<"Data not found.";
delete delptr;
}
else
{
delptr=curr;
curr=curr->next;
temp->next=curr;
delete delptr;
}
}
void list::display()
{
curr=head;
while(curr!=NULL)
{
cout<<"\n"<<curr->data;
curr=curr->next;
}
}
int main()
{
list l;
l.insert(1);
l.insert(2);
l.insert(3);
l.insert(4);
l.insert(5);
l.display();
cout<<"\nDeleting:";
l.delet(3);
l.display();
l.delet(5);
l.display();
return 0;
}

最佳答案

问题出在插入函数上:

curr=head;

while(curr!=NULL)
{
curr=curr->next;
}
curr->next=n;

在到达 curr 到 null 之后,您正在访问它。应该是:

curr=head;

while(curr->next !=NULL)
{
curr=curr->next;
}
curr->next=n;

关于c++ - 我在执行这个程序时得到 "segmentation fault",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19426120/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com