二重連結リスト プログラム
#include<stdio.h>
#include<stdlib.h>
struct node
{
int data;
struct node *rnext;
struct node*lnext;
}*first=NULL,*last=NULL;
void display()
{
struct node*temp;
if(first==NULL)
{
printf("list is empty\n");
return;
}
temp=first;
while(temp!=NULL)
{
printf("%d \n",temp->data);
temp=temp->rnext;
}
}
void insertion()
{
struct node *temp;
struct node *nn= (struct node*) malloc(sizeof(struct node));
printf("enter data to be inserted\n");
nn->rnext=NULL;
last->rnext=nn;
nn->lnext=last;
last=nn;
}
void deletion()
{
struct node *temp;
if(first==NULL||last==NULL)
{
printf("list is empty\n");
return;
}
temp=first;
first=first->rnext;
first->lnext=NULL;
free(temp);
}
/* main loop */
int main()
{
int option;
do
{
printf("enter option 1.insertion\n2.display\n3.deletion\n4.exit\n");
scanf("%d",&option);
switch(option)
{
case 1:
insertion();
break;
case 2:
display();
break;
case 3:
deletion();
break;
}
} while(option!=4);
}
C言語を使用して、Linuxで最後にノードを挿入し、最初にノードを削除する二重リンクリストを作成しました。しかし、プログラムの実行中にエラーセグメンテーション違反が発生しました。私も出力を投稿しています。
./out
enter option 1.insertion
2.display
3.deletion
4.exit
1
enter data to be inserted
12
Segmentation fault
please help me with the solution for segmentation fault
これは私のコードです。実行してデバッグするのを手伝ってください。最後にノードを挿入し、最後にノードを削除しています