在牛客网上写题目遇到的问题
#include <stdio.h>
#include <malloc.h>
typedef struct linkList
{
int data;
struct linkList * next;
struct linkList * prior;
}LNode,*LinkList;
LNode* traverse(LinkList L,int x)
{
LNode* p=L;
while(p->data!=x&&p->next!=NULL)
{
p=p->next;
}
return p;
}
void insert(LinkList L,int x,int y)
{
LNode* p;
LNode* q;
q=(LNode*)malloc(sizeof(LNode));
q->next=NULL;
q->prior=NULL;
p=traverse(L,x);
if(p->next==NULL&&p->data!=x)
{
q->next=NULL;
q->data=y;
q->prior=p;
p->next=q;
}
else
{
q->next=p;
p->prior->next=q;
q->prior=p->prior;
p->prior=q;
q->data=y;
}
}
void delete(LinkList L, int x)
{
LNode * p;
p=traverse(L,x);
if(p->next==NULL&&p->data!=x)
return;
else if(p->next==NULL)
{
p->prior->next=p->next;
free(p);
}
else
{
p->prior->next=p->next;
p->next->prior=p->prior;
free(p);
}
}
int main()
{
int n,x,y;
char oper[10];
LinkList L=(LNode*)malloc(sizeof(LNode));
L->next=NULL;
L->prior=NULL;
scanf("%d",&n);
for(int i=0;i<n;i++)
{
scanf("%s",oper);
if(oper[0]=='i')
{
scanf("%d%d",&x,&y);
insert(L,x,y);
}
else
{
scanf("%d",&x);
delete(L,x);
}
}
LNode* p=L;
if(L->next==NULL)
printf("NULL");
while(p->next!=NULL)
{
p=p->next;
printf("%d ",p->data);
}
return 0;
}