自己写的链表操作,帮检查一下哪错了。。。运行时会崩溃
#include <stdio.h>#define TRUE 1
#define FLASE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2
typedef struct{
int data;
int *next;
}LNode,*Linklist;
int GetElem(Linklist L,int i,int e)//Getelem
{
Linklist p;
int j; //
p=L->next; //
j=1;
while(p!=NULL&&j<i) //
{
p=p->next; //
++j;
}
if(!p||j>i) return ERROR; //
e=p->data; //
return OK; //
}//Getelem
int ListInsert(Linklist L,int i,int e) //ListInsert
{
Linklist p;int j=0;Linklist s;
p=L;
while(p!=NULL&&j<i-1) //GPS i position
{
p=p->next;
++j;
}
if(!p||j>i-1) return ERROR;
s=(Linklist)malloc(sizeof(LNode));
s->data=e;s->next=p->next;
p->next=s;
return OK;
} //ListInsert
int ListDel(Linklist L,int i)
{
Linklist p,q;int j=0;
p=L;
while(p->next&&j<i-1)
{
p=p->next;
j++;
}
if(!(p->next)||j>i-1) return ERROR;
q=p->next;
p->next=q->next;
free(q);
} //ListDel
void CreatLinklist(Linklist L,int n) //CreatLinklist
{
Linklist p,q;
int i;
p=L; //p 指向 L
L=(Linklist)malloc(sizeof(LNode)); // 初始化头节点
L->next=NULL;
for(i=1;i<=n;i++) //创建N个节点,并录入数据
{
q=(Linklist)malloc(sizeof(LNode));
printf("请输入数据\n");
scanf("%d",&q->data);
p->next=q;
p=p->next;
q->next=NULL;
}
} //CreatLinklist
void print(Linklist L)
{
Linklist p=L;
p=p->next;
while(p!=NULL)
{
printf("%d ",p->data);
}
printf("\n");
}
void MergeList(Linklist La,Linklist Lb,Linklist Lc)
{
Linklist pa,pb,pc;
pa=La->next;pb=Lb->next;
Lc=pc=La;
while(pa&&pb)
{
if(pa->data<=pb->data)
{
pc->next=pa;
pc=pa;
pa=pa->next;
}
else
{
pc->next=pb;
pc=pb;
pb=pb->next;
}
pc->next=pa?pa:pb;
free(Lb);
}
print(Lc);
}
int main()
{
int num;
Linklist La,Lb,Lc;
CreatLinklist(La,5);
CreatLinklist(Lb,3);
GetElem(La,3,num);
printf("La中的第3个数是%d",num);
ListInsert(Lb,2,2);
print(Lb);
MergeList(La,Lb,Lc);
}