链表的归并排序。。。值得注意的就是长度不同时,还要把长的部分加进去。
他输出的时候还要把原链表输出,所以两个链表还要设为空。
List Merge( List L1, List L2 ){
List p1=(List )malloc(sizeof(struct Node));
p1->Next=NULL;
List p=p1;
while(L1->Next&&L2->Next)
{
if(L1->Next->Data<L2->Next->Data)
{
p->Next=L1->Next;
p=p->Next;
L1->Next=p->Next;
p->Next=NULL;
}
else
{
p->Next=L2->Next;
p=p->Next;
L2->Next=p->Next;
p->Next=NULL;
}
}
if(L1->Next)
{
p->Next=L1->Next;
L1->Next=NULL;
}
if(L2->Next)
{
p->Next=L2->Next;
L2->Next=NULL;
}
return p1;
}