数据结构算法--合并两个有序线性链表

【归并】将两个按值有序排列的非空线性链表合并为一个按值有序的线性链表

LinkList MergeList(LinkList lista,LinkList listb)
	LinkList p,q,r,listc;
	p=lista;
	q=listb;
	if(lista.data<=listb.data)
	listc=lista;
	r=lista;
	p=lista->next;
	
	else
	listc=listb;
	r=listb;
	p=listb->next;
	
	while(p!=null&&q!=null)
	{
	if(p.data<=q.data)
	r->next=p;
	r=p;
	p=p->next;
	
	else
	r->next=q;
	r=q;
	q=q->next;
}

	r->next=(p!=null)?p:q;
	return listc;

首先这段代码的意思我先说明一下

	LinkList p,q,r,listc;
	p=lista;
	q=listb;
	if(lista.data<=listb.data)
	

> listc=lista;

	r=lista;
	p=lista->next;
	
	else
	

> listc=listb;

	r=listb;
	p=listb->next;

这里的listc所指向lista和listb中结点的较小者。

请添加图片描述

之后才开始我们的归并排序算法

while(p!=null&&q!=null)
	{
	if(p.data<=q.data)
	r->next=p;
	r=p;
	p=p->next;
	
	else
	r->next=q;
	r=q;
	q=q->next;
}

r其实是个listc所用的指针–>理解用来标志的作用

在这里插入图片描述

r->next=(p!=null)?p:q;
	return listc;//p:q;若p为空?不空放到后面,若空则把q放到后面。

最后这段代码就解释的是9与10了将排序好的910直接放到
listc后即可。
这里一定要有返回值才行,因为函数名前有声明函数的返回值为LinkList
在这里插入图片描述

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

鲲鹏猿

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

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

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

打赏作者

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

抵扣说明:

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

余额充值