关于C语言链表排序的问题
L1和L2是给定的带头结点的单链表,其结点存储的数据是递增有序的;函数Merge要将L1和L2合并为一个非递减的整数序列。应直接使用原序列中的结点,返回归并后的链表头指针。这是我编的函数,大神们帮忙看看哪里错了。typedef struct Node *PtrToNode;
struct Node {
ElementType Data; /* 存储结点数据 */
PtrToNode Next; /* 指向下一个结点的指针 */
};
typedef PtrToNode List; /* 定义单链表类型 */
List Merge(List L1,List L2)
{
List p,h;
if(L1->Data<L2->Data)
{p=h=L1;L1=L1->Next;
}
else{p=h=L2;L2=L2->Next;
}
while(L1&&L2)
{
if(L1->Data<L2->Data)
{
p->Next=L1;
L1=L1->Next;
p=p->Next;
}
else
{
p->Next=L2;
L2=L2->Next;
p=p->Next;
}
}
for(;L1;){
p->Next=L1;L1=NULL;
}
for(;L2;){
p->Next=L2;L2=NULL;
}
return h;
}