求救啊!我都快疯了 这个程序中swap函数到底那错了?
#include <stdio.h> #include<malloc.h>
#define null 0
typedef struct node
{
int data;
struct node *next;
}linklist;
void input(linklist *L)//输入函数
{
linklist *r,*p,*head;
int i,j;
r=L;
printf("input nums\n");
for(i=0;i<3;i++)
{
scanf("%d",&j);
p=(linklist *)malloc(sizeof(linklist));
p->data=j;
head=r;
r->next=p;
r=r->next;
}
r->next=null;
r=L->next;
while(r!=null)
{
printf("%2d",r->data);
r=r->next;
}
printf("\n");
}
void swap(linklist *A,linklist*B,linklist*C)//两单链表合并函数
{
linklist *p , *q, *r,*s;
p=A;
q=B;
C=A;r=A;
while(p!=null||q!=null)
if(p->data<q->data)
{
r=p;
p=p->next;
p=q;
}
else {
s=q->next;
r->next=q;
r=p;
p=s;
}
if(q!=null) r->next=q;
}
void output(linklist*L)//输出函数
{
linklist *p;
p=L;
while(p!=null)
{
printf("%2d",p->data);
p=p->next;
}
}
void main()
{
linklist *L1,*L2,*L3;
L1=L2=L3=(linklist *)malloc(sizeof(linklist));
input(L1);
input(L2);
swap(L1,L2,L3);
output(L3);
}