C语言数据结构的题 哪里出了问题啊?
#include <stdio.h> #include<malloc.h>
#define null 0
typedef struct node
{
int data;
struct node *next;
}linklist;
linklist *input(linklist *head)
{
linklist *r,*p;
int i;
p=head=(linklist *)malloc(sizeof(linklist));
printf("input nums\n");
for(i=0;i<3;i++)
{
r=(linklist *)malloc(sizeof(linklist));
scanf("%d",&r->data);
p->next=r;
p=r;
}
p->next=null;
return head;
}
linklist *swap(linklist *k1,linklist *k2)
{
linklist *p,*q,*r;
p=k1->next;
q=k2->next;
r=k1;
while(p&&q)
{ if(p->data>q->data)
{ r->next=q;
q=q->next;
}
if(p->data<q->data)
{
r->next=p;
p=p->next;
}
r=r->next;
}
if(p)
r->next=p;
else
r->next=q;
free(k2);
return(k1);
}
void print(linklist *head)
{
linklist *p;
p=head->next;
while(p)
{
printf("%d\n",p->data);
p=p->next;
}
}
void main()
{
linklist *L1,*L2,*head,*p,*q;
L1=L2=(linklist *)malloc(sizeof(linklist));
input(L1);
input(L2);
head=swap(L1,L2);
print(head);
}