一道 C语言题目 求改错, 谢谢~
目的 是 输入 两组数 然后 合并 排序 自写的程序 如下 调试了 下 没错误 但是 就是运行不了 求改错 THANKS ~
#include<stdio.h>
#include<malloc.h>
typedef struct Node
{
int data;
struct Node *next;
}LinkList;
LinkList *CreatList()
{
LinkList *L,*r,*s;
L=(LinkList*)malloc(sizeof(LinkList));
r=L;
int x;
scanf("%d",&x);
while(x!=0)
{
s=(LinkList*)malloc(sizeof(LinkList));
s->data=x;
r->next=s;
r=s;
scanf("%d",&x);
}
r->next=NULL;
return L;
}
LinkList *combine(LinkList *pa,LinkList*pb)
{
LinkList *p,*q;
p=pa->next;
q=pb->next;
while(p) p=p->next;
p->next=q;
return pa;
}
LinkList *order(LinkList *L)
{
LinkList *a,*b,*c;
a=L->next;
b=a->next;
while(a->next!=NULL)
{
while(b)
{
if(a->data<b->data)
{
c->data=a->data;
a->data=b->data;
b->data=c->data;
}
b=b->next;
}
a=a->next;
b=a->next;
}
return L;
}
void printList(LinkList *p1)
{
LinkList *p;
p=p1->next;
while(p)
{
printf("%d ",p->data);
p=p->next;
}
}
void main()
{
LinkList *LinA,*LinB,*LinC,*LinD;
printf("请输入第一组数(以0为结束标志):");
LinA=CreatList();
printf("请输入第二组数(以0为结束标志):");
LinB=CreatList();
LinC=combine(LinA,LinB);
LinD=order(LinC);
printf("合并排序后数据为:\n");
printList(LinD);
}