| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 单链表的合并与反转 -> 正文阅读 |
|
[数据结构与算法]单链表的合并与反转 |
作者:recommend-item-box type_blog clearfix |
目录1.单链表的合并算法 2.单链表的反转 单链表的合并算法1.单链表合并的前提:必须两个链表中的数据是排好序的!!! 2.单链表的合并算法图解和解析 ??????? ?1>.你需要一个新的链表;2>.两个链表中同位序的元素进行比较,然后依据合并链表所要求的大小关系放入合并表中。(如图,两个待合并链表中元素的位序是从小到大排列,所以待合并链表的位序也是如此,先将两表的第一位序元素比较,因为2>1,所以将1放在合并表第一位,2放在之后。)????? ?3>.对于剩余元素的处理:如图,现在第二个链表的元素还剩下8和9,所以直接照搬下来即可。但是此时的照搬是有条件的,就是队列一的指针是指向NULL(空)的。 3.单链表合并算法的代码:
单链表的反转1.图解链表的反转: ?初始的链表 首先第一步操作,就是断掉除头结点之外的链表(假想)。 ?断掉之后,下面的链表就相当于一个无头结点的链表,这时候需要再定义一个新指针来标记新的不带头结点链表的地址。 然后开始第二步,就是将只剩下头结点的链表当成一个新列表,将剩下的无头链表当成元素的集合,然后采取将剩下的元素循环入队(可以参考链式队列的入队方法。) 【https://blog.csdn.net/m0_54376461/article/details/119655676】(链式队列的入队方法) ?第一个元素入队,就是依靠定义的新指针进行下一个结点的寻址。先入队的结点位置靠后。 ? ?第二个元素入队,剩下的元素入队可以参考这个形式。 2.反转链表的代码
思路解释 注意:函数的参数是原链表的地址,新定义的两个结点是用来做循环插入的,下面重点讲述一下while循环中的代码段
?这个操作是将新结点调至为头结点的后一位,准备插入
?这个操作即为断掉列表(一定要注意,先定义储存地址值再断掉)
这个循环条件是当剩下的无头队列还存在元素时,继续维持插入操作。 ?
?首先第一行的操作就是将s之后的指针置为空,(因为s指针和ss指针都已经有保存,防止冲突)第二行就是元素入队,第三行就是将s指向下一个元素。 注意!!! 看这个while循环时一定要注意,不要持续的想象第一个结点来助记,多想象一下指针向前滚动的样子更方便理解。 ???????? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 20:16:51- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |