当前位置: 首页 > article >正文

算法:两个升序单链表的合并

将两个按值排序的带头结点的单链表La和Lb排列成一个升序的
单链表,并返回一个新的单链表的表头指针
(两个升序合并成升序,用尾插法)

LinkList Merge_LinkList(LNode* La, LNode* Lb)
{
	//准备工作
	LNode* Lc;//新链表的头结点
	LNode* pc;//新链表的工作指针
	LNode* pa;//La的工作指针
	LNode* pb;//Lb的工作指针
	LNode* ptr;//用于删除结点时保存指针
	Lc = La;//Lc用La的头结点
	pc = La;//pc用于尾指针
	pa = La->next;//工作指针初始化
	pb = Lb->next;//工作指针初始化
	
	//合并
	while (pa != NULL && pb != NULL)
	{
		if (pa->data < pb->data)
		{
			pc->next = pa;
			pc = pa;//pa尾插
			pa = pa->next;//pa后移
		}
		else if (pa->data > pb->data)
		{
			pc->next = pb;
			pc = pb;//pb尾插
			pb = pb->next;//pb后移
		}
		else//相等
		{
			pc->next = pa;
			pc = pa;//二者插一个即可
			pa = pa->next;//后移
			ptr = pb;
			pb = pb->next;//将另一个删除
			free(ptr);
		}
	}
	if (pa != NULL)//pa不空
		pc->next = pa;//将pa接到pc的后继结点
	if (pb != NULL)
		pc->next = pb;
	free(Lb);//释放Lb链表
	return Lc;
}


http://www.kler.cn/a/470207.html

相关文章:

  • thinnkphp5.1和 thinkphp6以及nginx,apache 解决跨域问题
  • sunrays-framework(太阳射线框架搭建)
  • UDP -- 简易聊天室
  • LRU(1)
  • 级联配准learning
  • C++ static关键字(八股总结)
  • 起重机检测数据集VOC+YOLO格式2316张1类别
  • Adaboost:基于弱学习器组合实现强大性能提升的集成学习方法解析
  • 密码学基本理论
  • YOLOV8涨点之多尺度注意力融合(MAF)模块
  • 【异常解决】Unable to start embedded Tomcat Nacos 启动报错
  • 番外篇-CSS3新增特性
  • Nginx:反向代理
  • zephyr移植到STM32
  • 【昌哥IT课堂】MySQL8.0新特性之binlog加密与解密
  • 力扣leetcode 77 - 组合 C语言解法 递归+回溯
  • 用 HTML5 Canvas 和 JavaScript 实现流星雨特效
  • ENSP综合实验(中小型网络)
  • 解决电脑开机PcaSvc.dll出错丢失条目:PcaWallpaperAppDetect最新方法
  • 物联网:七天构建一个闭环的物联网DEMO
  • 【Golang 面试题】每日 3 题(二十)
  • Java基础 注解
  • C#版OpenCv常用函数大全
  • 手写RPC笔记
  • [Qt] 万字详解 | 常用控件 | Button | Label | LCD | ProgressBar
  • Redis(三)单线程架构介绍