链表有序合并

有多组测试数据,每组测试数据占两行。第一行是集合A,第一个整数m(0<=m<=100)代表集合A起始有m个元素,后面有m个非递减排序的整数,代表A中的元素。第二行是集合B,第一个整数n(0<=n<=100)代表集合B起始有n个元素,后面有n个非递减排序的整数,代表B中的元素。每行中整数之间用一个空格隔开。


下面来写一下这个代码,只写中间主体部分

void  Merge(Linklist L1,Linklist L2,Linklist L3)
{
	Node*p1,*p2,*p3,*t;
	p1=L->next;
	p2=L->next;//指向首元节点 
	p3=L;//指向头结点 
	while(p1&&p2)//只要 p1 和 p2 中有一个指向了链表的末尾(即为NULL),循环就会结束。
	{
		if(p1->data<=p2->data)
		{
			t=p1;//将当前指针 p1 指向的节点赋值给临时指针 t
			p1=p1->next;//将 p1 指向下一个节点
			p3->next=t;// 将新节点 t 插入到 p3 所指节点的后面
			p3=p3->next;//将 p3 指向新插入的节点 t
		}
		else
		{
			t=p2;
			p2=p2->next;
			p3->next=t;
			p3=p3->next;
		}
		if(p1!=NULL)p3->next=p1;//有剩余节点,插入L3的尾部 
		if(p2!=NULL)p2->next=p2;//同理 
	 } 
 } 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

何舟yancy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值