数据结构:链表(2)

目录

一、链表进阶函数

函数①:找中间节点

函数②:找倒数第k个节点

函数③:链表的倒置

函数④:链表的冒泡排序【约40行】

函数⑤:链表的选择排序(每一轮选一个最小的放前边)【36行】

[函数⑥: 判断链表是否有环、环有多大(获得环长)、环入口位置【知道思想即可】](#函数⑥: 判断链表是否有环、环有多大(获得环长)、环入口位置【知道思想即可】)


一、链表进阶函数

函数①:找中间节点

分析:先定义两个空指针(一个快指针一个慢指针)指向链表第一个有效元素,再使快指针后移两个节点慢指针后移一个节点,重复移动的步骤,直到快指针指向空,则慢指针指向链表的中间
代码:

结果:

函数②:找倒数第k个节点

分析:先定义两个空指针(一个快指针一个慢指针)指向链表第一个有效元素,再使快指针后移k个节点,r再使两个指针同时后移,直到快指针指向空,则慢指针指向链表倒数第k个节点
代码

结果

函数③:链表的倒置

代码

调用

结果

函数④:链表的冒泡排序【约40行】

分析:定义两个指针(前指针和后指针),分别指向第二个有效节点和第一个有效节点,若前比后大,则只交换数据(节点存的地址不变),这两个指针后移一个节点,如此往复便执行完一轮...


代码

调用

结果

函数⑤:链表的选择排序(每一轮选一个最小的放前边)【36行】

分析

其核心思想与数组的选择排序一脉相承,都是反复从待排序序列中找出最小(或最大)元素,将其放到每一轮最前边

代码

调用

结果

函数⑥: 判断链表是否有环、环有多大(获得环长)、环入口位置【知道思想即可】

分析

判断链表是否有环:快指针走2步,慢指针走1步,两个指针相遇即为有环

环有多大(获得环长):从相遇点走一圈,计数

环入口位置:两个指针,一个指针指向开头,一个指针指向相遇点,两个指针都同时向后走,相遇点即为环入口位置

相关推荐
大侠归来10 分钟前
C语言内存管理:从栈到堆的完整指南
c语言·开发语言·python
cu14312 分钟前
细谈GM7123C的具体功能与其应用
c语言·c++·人工智能·嵌入式硬件
LOVE️YOU26 分钟前
Python 数据结构的本质:位置、对象引用、Hash 与可变性
数据结构·python·哈希算法
不会就选b29 分钟前
算法日常・每日刷题--<动态规划>1
java·数据结构·算法
shehuiyuelaiyuehao35 分钟前
算法54,链表 两数相加
数据结构·算法·链表
Logic1011 小时前
C语言/数据结构位运算题解:异或XOR找出弹子游戏机中数量为奇数的数字——只出现奇数次
c语言·数据结构·数组·位运算·时间复杂度·算法题·异或性质
晓蛋2 小时前
二级C语言成绩查询方法
c语言·计算机等级考试·成绩查询·官网登录·准考证号
光子物联单片机3 小时前
STM32传感器模块编程实践(二十二)DIY智能WIFI视频控制小车
c语言·stm32·单片机·嵌入式硬件·音视频
阿狗童鞋3 小时前
数据结构与算法实战指南
数据结构·算法
老王爱玩车3 小时前
深入理解指针5
c语言·开发语言·学习