链表归并.将两个非递减有序链表合并为一个非递减有序链表

设头指针为La和Lb的单链表分别为线性表La和Lb的存储结构,归并La和Lb,以La为基础

void MergeList_L(LinkList &La, LinkList &Lb)
{
	//归并有序表La和Lb,生成新的有序表Lc
	//并且在归并之后删除La和Lb
	pa = La->next;
	pb = Lb->next;
	pre = La;//将pre作为链表合并后的新的头节点
	while (pa&&pb)//la和lb任意一条链表归并完毕后跳出while循环
	{
		if (pa->data <= pb->data)//如果pa的值小于等于pb,则pb不插入,pb不动,pa前进
			  //此时新头节点pre在La,pr作为pa的前驱节点链接pa,pa前进
		{
			pre->next = pa; pre = pa; pa = pa->next;    //pre作为前驱节点,意义在于游标
		}
		else                     //pa的值大于pb,则需要把pb插在pa的前边(已知pre作为游标 是pa的前驱元素)
		{
			pre->next = pb; pre = pb; pb = pb->next;// 插入pb,pb前进 剩下的节点和La看作整体进行比较
		}
		pre->next = pa ? pa : pb;//插入剩余元素
		Free(Lb);
}//MergeList_L

}

A  ?  x  :y     用法:A为判断条件,A为真时为x,为假时为y

  • 2
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值