これは、C++ で単一リンク リストを実装するためのコードです。挿入、削除、表示の3つの基本操作を行っています。データはメイン関数から渡されます。コードはコンパイルされますが、実行中に「セグメンテーション違反」が表示されます。コードの何が問題なのか教えてください。
#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;
}