目录
函数⑤:链表的选择排序(每一轮选一个最小的放前边)【36行】
[函数⑥: 判断链表是否有环、环有多大(获得环长)、环入口位置【知道思想即可】](#函数⑥: 判断链表是否有环、环有多大(获得环长)、环入口位置【知道思想即可】)
一、链表进阶函数
函数①:找中间节点
分析:先定义两个空指针(一个快指针一个慢指针)指向链表第一个有效元素,再使快指针后移两个节点慢指针后移一个节点,重复移动的步骤,直到快指针指向空,则慢指针指向链表的中间
代码:结果:
函数②:找倒数第k个节点
分析:先定义两个空指针(一个快指针一个慢指针)指向链表第一个有效元素,再使快指针后移k个节点,r再使两个指针同时后移,直到快指针指向空,则慢指针指向链表倒数第k个节点
代码结果
函数③:链表的倒置
代码
调用
结果
函数④:链表的冒泡排序【约40行】
分析:定义两个指针(前指针和后指针),分别指向第二个有效节点和第一个有效节点,若前比后大,则只交换数据(节点存的地址不变),这两个指针后移一个节点,如此往复便执行完一轮...
代码调用
结果
函数⑤:链表的选择排序(每一轮选一个最小的放前边)【36行】
分析
其核心思想与数组的选择排序一脉相承,都是反复从待排序序列中找出最小(或最大)元素,将其放到每一轮最前边
代码
调用
结果
函数⑥: 判断链表是否有环、环有多大(获得环长)、环入口位置【知道思想即可】
分析
判断链表是否有环:快指针走2步,慢指针走1步,两个指针相遇即为有环
环有多大(获得环长):从相遇点走一圈,计数
环入口位置:两个指针,一个指针指向开头,一个指针指向相遇点,两个指针都同时向后走,相遇点即为环入口位置















