【建立单链表:头插法,尾插法;循环列表,带尾指针的循环链表合并(将Tb合并在Ta之后)】

news2024/11/7 13:36:08

文章目录

  • 一、单链表的基本操作的实现
    • 1.建立单链表:头插法----元素插入在链表头部,也叫头插法。
    • 2.建立单链表:尾插法----元素插入在链表尾部,也叫尾插法。
  • 二、线性表的链式表示和实现
    • 1.循环列表
    • 2.带尾指针的循环链表合并(将Tb合并在Ta之后)

一、单链表的基本操作的实现

1.建立单链表:头插法----元素插入在链表头部,也叫头插法。

1.从一个空表开始,重复读取数据。
2.生成新结点,将读入数据存放到新结点的数据域中。
3.从最后一个结点开始,依次将各结点插入到链表的最前端。
在这里插入图片描述

void CreateList(LinkList& L, int n) {
	L = new LNode;
	L->next = NULL;//先创建一个带头结点的单链表
	LinkList p;
	int i;
	for (i = n; i > 0; --i) {
		p = new LNode;//生成新结点p = (LNode*)malloc(sizeof(LNode));
		cin >> p->data;//输入元素值scanf(&p->data);
		p->next = L->next;
		L->next = p;
	}
}

2.建立单链表:尾插法----元素插入在链表尾部,也叫尾插法。

1.从一个空表L开始,将新结点逐个插入到链表的尾部,尾指针r指向链表的尾结点。
2.初始时,r同L均指向头结点。每读入一个数据元素则申请一个新结点,将新结点插入到尾结点后,r指向新结点。
在这里插入图片描述

void CreateList(LinkList& L, int n) {
	L = new LNode;
	L->next = NULL;
	int i;

	LinkList r = L;//尾指针r指向头结点
	for (i = 0; i < n; ++i) {
		LinkList p = new LNode;
		cin >> p->data;//生成新结点,输入元素值
		p->next = NULL;
		r->next = p;//插入到表尾
		r = p;//r指向新的尾结点

	}
}

二、线性表的链式表示和实现

1.循环列表

循环列表:是一种头尾相连的链表(即:表中的最后一个结点的指针域指向头指针,整个链表形成一个环)。
在这里插入图片描述
优点:从表中任一结点出发均可找到表中的其他结点。
注意:由于循环指针没有NULL指针,故涉及遍历操作时,其终止条件就不再像非循环链表那样判断p或p->next是否为空,而是他们是否等于头指针。
p != L;
P -> next != L;

头指针表示单循环链表:①找a1的时间复杂度:O(1);②找an的时间复杂度:O(n)。
注意:表的操作常常在表的首尾进行。
尾指针表示单循环链表:①a1的存储位置:R->next->next;
②an的存储位置是:R。时间复杂度都是O(1)。

2.带尾指针的循环链表合并(将Tb合并在Ta之后)

在这里插入图片描述
分析的操作:
①p存表头结点(p=Ta->next)
②Tb表头连接在Ta表尾(Ta->next = Tb->next->next)
③释放Tb表结点(delete Tb->next)
④修改指针(Tb->next = p)

LinkList Connect(LinkList Ta, LinkList Tb) {
	//假设Ta和Tb都是非空的单循环链表
	LinkList p;
	p = Ta->next;//p存表头结点
	Ta->next = Tb->next->next;//Tb表头连接Ta表尾
	delete Tb->next;//释放Tb的头结点
	Tb->next = p;//修改指针
	return Tb;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1114864.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

用自定义的QSortFilterProxyModel实现条件过滤,使qtableview中只显示满足条件的行信息

在实际开发中&#xff0c;qtableview是qt客户端页面中最常用的控件之一。运用qtableview的同时&#xff0c;也会存在着先对初始数据进行过滤&#xff0c;然后在qtableview上展示的只有满足条件的那些信息。或者在不同的条件下要展示出不同的满足条件的行信息。 第一种方法&…

电脑删除的视频怎么恢复?可尝试着3钟恢复办法!

无论是为了工作还是生活&#xff0c;我们都有可能在电脑上保存重要的视频&#xff0c;如宣传视频、回忆录视频等。这些视频通常包含了制作者的心血&#xff0c;要是被我们误删除了&#xff0c;很难重新拍摄&#xff0c;那么电脑删除的视频怎么恢复&#xff1f; 能。通常&#…

用 GPU 加速 PQC 方案:Montgomery、SHA3

参考文献&#xff1a; [DK91] Duss S R, Kaliski B S. A cryptographic library for the Motorola DSP56000[C]//Advances in Cryptology—EUROCRYPT’90: Workshop on the Theory and Application of Cryptographic Techniques Aarhus, Denmark, May 21–24, 1990 Proceeding…

Tensorboard安装及简单使用

Tensorboard 1. tensorboard 简单介绍2. 安装必备环境3. Tensorboard安装4. 可视化命令 1. tensorboard 简单介绍 TensorBoard是一个可视化的模块&#xff0c;该模块功能强大&#xff0c;可用于深度学习网络模型训练查看模型结构和训练效果&#xff08;预测结果、网络模型结构…

带头的循环双向链表的简单介绍

目录 带头的循环双向链表&#xff1a; 1、带头&#xff1a; 2、循环&#xff1a; 3、双向&#xff1a; 图例&#xff1a; 带头的双向循环链表的创建&#xff1a; 头文件部分&#xff1a; 主函数部分&#xff1a; 最终调试效果&#xff1a; 使用一级指针传参的原因&am…

异常数据检测 | Python奇异谱分析(SSA)数据缺失值插补

文章目录 文章概述模型描述源码分享参考资料文章概述 长时序栅格数据经常会出现一些缺失值,会对后续的分析造成很大的不便。这便需要利用一些插值算法对这些缺失数据进行填补,奇异谱分析(SSA)便是常用的一种插值方法。 模型描述 在时间序列分析中,「奇异谱分析」(「SS…

了解活动聊天机器人如何革新活动行业

在如今快节奏的时代&#xff0c;活动策划和管理对于任何活动的成功变得至关重要。无论是会议、展览会还是企业聚会&#xff0c;组织者都努力为参与者创造难忘的体验&#xff0c;同时确保幕后的顺利执行。然而&#xff0c;由于有许多任务需要处理且资源有限&#xff0c;管理活动…

智慧油气田方案:视频+AI识别,助力油气田生产与管理智能化转型

一、背景与挑战 根据《“十四五”能源领域科技创新规划》指出&#xff0c;要推动核心技术创新突破&#xff0c;推动煤炭、油田、电厂、电网等传统行业与数字化、智能化技术深度融合。我国油田产业已经摆脱了早期粗放式增长的阶段&#xff0c;需要更加精细化、智慧化、科学化的…

59个外贸开发信爆款标题,提高你的邮件打开率

标题是吸引读者打开邮件的第一印象&#xff0c;对于外贸销售人员来说&#xff0c;精心撰写开发信标题至关重要。客户收到的邮件那么多&#xff0c;那么在客户收件箱中的5至20个客户邮件标题中&#xff0c;你必须确保自己的标题能够脱颖而出。 下面的外贸开发信标题示例&#x…

第十四章 Iambda表达式和流处理

第十四章 Iambda表达式和流处理 14.1&#xff1a;Iambda表达式简介 Iambda表达式可以用非常少的代码来实现抽象方法。 Iambda表达式不能独立执行&#xff0c;因此必须是西安函数式接口&#xff0c;并返回一个函数式接口的对象。 Iambda表达式的语法特殊的 语法格式如下 &…

我在明白软件测试这个道理后,涨薪10万

上升期的创业型公司 vs 大厂 如何抉择&#xff1f; 最近总有一些学生特别“凡尔赛”的发几个 offer 问我选择哪个&#xff1f;其中比较典型的一个问题就是&#xff1a; “一个是处于上升期的创业型公司 &#xff0c;一个行业大厂&#xff0c;薪资待遇差不多&#xff0c;到底该…

良心推荐,超好用老师小程序

各位老师&#xff0c;今天咱就来说说一件让你们省心省力的事儿——成绩查询系统。那些年&#xff0c;咱们或许都经历过手动发布成绩的痛苦&#xff0c;但现在&#xff0c;时代变了&#xff01;咱们有了小程序可以使用了&#xff0c;学生们可以自助查询成绩&#xff0c;省去了您…

Springboot+vue的班级综合测评管理系统(有报告)。Javaee项目,springboot vue前后端分离项目。

演示视频&#xff1a; Springbootvue的班级综合测评管理系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot vue前后端分离项目。 项目介绍&#xff1a; 本文设计了一个基于Springbootvue的前后端分离的班级综合测评管理系统&#xff0c;采用M&#xff08…

【微信小程序开发】自定义组件以及页面布局设计 )

【微信小程序开发】自定义组件以及页面布局设计 1.创建自定义组件2...在tabs的wxml文件中定制组件模板2.1.js中定义组件的属性2.2.定义组件的相关事件2.3在其他页面引用组件2.4在使用组件的wxml页面中使用组件2.5定义属性值 三。个人中心的实现 ) 1.创建自定义组件 要新建comp…

加密货币恐怖融资惊动国会!而链上分析公司看不下去了,紧急辟谣?

巴以冲突发生后&#xff0c;关于以加密货币资助恐怖分子的争论不断。全球最大的交易所币安和稳定币发行商Tether都表示己配合冻结多个账户和地址&#xff0c;以切断哈玛斯加密金援。美国合规交易所Coinbase也在近日发表了防止加密货币非法活动的宣言&#xff0c;反加密出名的参…

Mysql第二篇---InnoDB数据存储结构

Mysql第二篇—InnoDB数据存储结构 数据库的存储结构: 页 索引结构给我们提供了高效的索引方式, 不过索引信息以及数据记录都是保存在文件上的(innodb的ibd文件, MyISAM的MyI和MyD文件), 确切的说是存储在页结构中. 另一方面, 索引是在存储引擎中实现的, MySQL服务器上的存储引…

M-BUS和modbus的区别是什么?

M-BUS与Modbus是两种在工业自动化和楼宇自动化领域广泛应用的通信协议。那么&#xff0c;这两种通信协议有哪些区别呢?下面&#xff0c;就由小编带大家一起来了解下吧! 一、简介 M-BUS(Multi-dropBus&#xff0c;多点通信总线)和Modbus(莫迪波特率)都是用于设备和系统之间通信…

Python清理数据的常用方法总结

目录 1、数据预览 2、缺失值处理 3、异常值处理 4、数据类型转换 5、重复值处理 6、数据标准化 7、特征选择 8、处理类别数据 总结 在数据科学和机器学习领域&#xff0c;数据清理是一个非常重要的步骤。未经清理的数据可能会包含许多问题&#xff0c;例如缺失值、异常…

C++中多态的使用和建立条件

一、多态引入 多态按字面的意思就是多种形态。当类之间存在层次结构&#xff0c;并且类之间是通过继承关联时&#xff0c;就会用到多态。 C 多态意味着调用成员函数时&#xff0c;会根据调用函数的对象的类型来执行不同的函数。 根据代码&#xff0c;引入多态的概念&#xff1…

智能台灯语音控制丨解放双手

台灯是日常生活中一种常见的照明产品。以往的台灯大多都是采取手动控制&#xff0c;通过按键去对台灯的亮度进行调整。随着科技的发展&#xff0c;台灯也开始走向了智能化。人们已经能够对智能台灯进行语音控制&#xff0c;通过调节灯光开关、色温、灯光亮度等操作&#xff0c;…