已知带有头结点的两个单链表 la 和 lb 都是非递增有序序列。编写好的算法实现将这两个链表合并为新的带有头结点的链表 lc ,使得 lc 的元素仍然是非递增有序排列的序列,如果遇到 la 与 lb 中元素相同,则只取 la 中的元素,去掉 lb 中的元素。已知 la 的元素个数 为 m , lb 的元素个数为 n 。
void Merglist_L(LinkList &La,LinkList &Lb,LinkList &Lc )
{if(m<n)
{Lc=La;
pa=La->next;pb=Lb->next;pc=Lc;
while(pa&&pb)
{if(pa->data<pb->data)
{pc->next=pb;pc=pb;pb=pb->next;}
else if(pa->data>pb->data)
{pc->next=pa;pc=pa;pa=pa->next}
else
{pc->next=pa;pa=pa->next;pb=pb->next;}
}//end while
if(pa) pc->next=pa;
else pc->next=pb;
free(Lb);
}//end if
else { 从 Lb 出发进行比较 ………}
}//end