代码:
List Merge( List L1, List L2 )
{
List rear,p1,p2,head;
rear=(List)malloc(sizeof(struct Node));
rear->Next=NULL;
head=rear;
p1=L1->Next;
p2=L2->Next;
if(!L1&&!L2)
return NULL;
while(p1&&p2)
{
if(p1->Data>=p2->Data)
{
rear->Next=p2;
p2=p2->Next;
}
else
{
rear->Next=p1;
p1=p1->Next;
}
rear=rear->Next;
}
if(p1)
{
rear->Next=p1;
}
if(p2)
{
rear->Next=p2;
}
L1->Next=NULL;
L2->Next=NULL;
return head;
}
思路:
1.细节:这道题不难,因此做的很快,但是一直在调试,最后发现认真看输出结果很重要!!!
一定不要和我一样!!!注意看最后输出的L1和L2都是NULL,因此L1和L2的Next要变成NULL!!!!!!!!!
2.总体思路是:创建空的头节点,临时指针P1,P2,不停对比大小,然后改变rear的Next指向。