- 综合讨论区
- 帖子详情
两个有序链表序列的合并,终于做到满分了!
零尘
发表于2017年10月17日
<p><code class="brush:cpp;toolbar:false" >List Merge( List L1, List L2 )
{ List p1,p2,Lc,pc;
Lc=(List)malloc(sizeof(struct Node));
pc=Lc;
p1=L1->Next; //p1、p2表示当前比较的L1和L2的结点
p2=L2->Next;
while(p1&&p2)
{
if(p1->Data<=p2->Data)
{
pc->Next=p1;
pc=p1;
p1=p1->Next; //将比较结点向后移,此时没有断开头结点和第一个结点的联系。但是把各个结点按大小顺序联系了起来。
}
else {
pc->Next=p2;
pc=p2;
p2=p2->Next;
}
}
pc->Next=p1?p1:p2; //将剩余结点连到Lc后面去
L1->Next=p1; //将L1和L2与后一个结点的联系断开,指向空结点
L2->Next=p2;
p1?(L1->Next=p2):(L2->Next=p1);
return Lc;
}</code></p>