这是别人的··· 弄了半天,我也没能解决· 请大虾们看看~~~
#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;
q=pb;
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;
}
int printList(LinkList *p1)
{
LinkList *p;
p=p1->next;
while(p)
{
printf("%d ",p->data);
p=p->next;
}
}
main()
{
LinkList *LinA,*LinB,*LinC,*LinD;
printf("请输入第一组数(以0为结束标志):");
LinA=CreatList();
printf("请输入第二组数(以0为结束标志):");
LinB=CreatList();
LinC=combine(LinA,LinB);
printf("The List After combine is:");
printList(LinC);
LinD=order(LinC);
printf("合并排序后数据为:\n");
printList(LinD);
}