//两个不交叉的有序链表的合并,假定顺序是都是由小到大,合并成一个由小到大链表。
**
NODE * TwoLinkListCombine(LinkList &L,LinkList &M,LinkList &lc)
{
//已知单链表la,lb以递增顺序排列
//归并la,lb得到新链表lc,lc也以递增顺序排列
LinkList pa, pb, pc, p;
pa = L->next;
pb = M->next;
lc= pc = L; //用la的头结点做lc的头结点
while (pa&&pb) //pa与pb都不为空时
{
if (pa->data <=pb->data)
{
pc->next = pa;
pc = pa; //pc指向lc中表中当前最后一个结点
pa = pa->next;
}
else
{
pc->next = pb;
pc = pb;
pb = pb->next;
}
}
pc->next = pa ? pa : pb; //插入剩余段
free(M); //释放lb的头结点
for (p = lc; p != NULL; p = p->next)
{
printf("%d,",p->data);
}
return 0;
}
链表合并
最新推荐文章于 2024-06-27 20:57:14 发布