这是用于在c ++中实现单链表的代码。 正在执行三种基本操作,即插入,删除和显示。数据从main函数传递。代码得到编译但在执行期间显示“分段错误”。 请告诉我代码有什么问题。
#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;
}
答案 0 :(得分:3)
问题在于插入功能:
curr=head;
while(curr!=NULL)
{
curr=curr->next;
}
curr->next=n;
到达curr后,您正在访问它。它应该是:
curr=head;
while(curr->next !=NULL)
{
curr=curr->next;
}
curr->next=n;