链表合并

//两个不交叉的有序链表的合并,假定顺序是都是由小到大,合并成一个由小到大链表。
**
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;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值