请帮我看看这个链表问题,归并问题。
#include<stdio.h>#include<stdlib.h>
#include<malloc.h>
typedef struct LNode{
int data;
struct LNode*next;
}LNode,*LinkList;
void CreateList(LinkList L,int n)//创建链表函数
{
L=(LinkList)malloc(sizeof(LNode));
LinkList p;
L->next=NULL;
int i;
scanf("%d",&n);
for(i=0;i<=n;i++)
{
p=(LinkList)malloc(sizeof(LNode));
scanf("%d",&p->data);
p->next=L->next;
L->next=p;
}
}
void add(LinkList L1,LinkList L2,LinkList L3)//归并函数,此部分正确。
{
LinkList p1,p2,p3;
p1=L1->next;
p2=L2->next;
p3=L3;
while(p1&&p2)
{
if(p1->data<p2->data)
{
p3->next=p1;
p3=p1;
p1=p1->next;
}
else
{
p3->next=p2;
p3=p2;
p2=p2->next;
}
}
if(p1==NULL) p3->next=p2;
else p3->next=p1;
}
int main()
{
LinkList L1,L2,L3,r;
int m,n;
scanf("%d",&m);
CreateList(L1,m);
scanf("%d",&n);
CreateList(L2,n);
add(L1,L2,L3);
r=L3->next;
while(r)
{
printf("%d",r->next);//输出结果
r=r->next;
}
return 0;
}
这是代码,问题是 将两个有序递增链表归并成一个有序递增链表,我运行时总是崩溃。晕死,归并函数正确无误。求大神相助。