数据结构:链表(2)

目录

一、链表进阶函数

函数①:找中间节点

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

函数③:链表的倒置

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

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

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


一、链表进阶函数

函数①:找中间节点

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

结果:

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

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

结果

函数③:链表的倒置

代码

调用

结果

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

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


代码

调用

结果

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

分析

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

代码

调用

结果

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

分析

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

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

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

相关推荐
shehuiyuelaiyuehao1 小时前
算法29,前缀和,除自身以外的数组的乘积
java·数据结构·算法
啵啵啵鱼2 小时前
DS-顺序表
java·数据结构·笔记·后端·链表·obsidian
YSL0701243 小时前
时间复杂度和空间复杂度
数据结构
雨田言炎3 小时前
2026/9/5 C复习笔记(一)
c语言·笔记
洋不写bug3 小时前
链表面试笔试经典题目详细解析,题目多解法,复杂度分析
数据结构·链表·面试
白狐_7985 小时前
408 数据结构|KMP做题方法:next、nextval和高频易错点
数据结构·算法
wuyk5555 小时前
从零吃透 MQTT 通信|第 5 章 MQTT 心跳保活机制深度优化,断线检测与智能自动重连
c语言·开发语言·stm32·学习
luj_17686 小时前
虚实交融中的真实人物塑造
c语言·开发语言·网络·经验分享·算法
AC赳赳老秦6 小时前
农产品公开数据应用:OpenClaw 抓取农产品价格、产销公开数据,实现农产品行情动态监测
java·c语言·javascript·python·php·deepseek·openclaw
来一碗刘肉面7 小时前
平衡二叉树的删除
数据结构·算法