双重链表计划
#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);
}
我写了一个双链表来插入一个节点,并在linux下使用C语言删除一个节点。 但在执行程序时会出现错误分段错误。 我也在发布输出。
./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
这是我的代码,请帮我运行并调试它。我在末尾插入节点并在末尾删除节点
答案 0 :(得分:0)
在第一次插入期间,全局变量last
等于0,因此您收到了段错误信号。