当前位置:网站首页 > 区块链基础 > 正文

单链表 逆序(单链表逆序代码)



给你单链表的头节点  ,请你反转链表,并返回反转后的链表。

示例 1:

输入:head = [1,2,3,4,5] 输出:[5,4,3,2,1] 

示例 2:

输入:head = [1,2] 输出:[2,1] 

示例 3:

输入:head = [] 输出:[] 

提示:

  • 链表中节点的数目范围是 

 
初始状态
  • 指针初始化为链表的头节点,表示当前正在处理的节点。
  • 指针初始化为 ,表示前一个节点,在反转过程中将用来链接当前节点。

示例:

链表 。

初始状态:

指向 ,链表为

指向

第一轮循环:

指向

使 指向

变为

变为 ()

链表状态: (指向反转后的部分)

第二轮循环:

指向

使 指向

变为

变为 ()

链表状态:

第三轮循环:

指向

使 指向

变为

变为 ()

链表状态:

第四轮循环:

指向

使 指向

变为

变为 ()

链表状态:

第五轮循环:

指向

使 指向

变为

变为 ()

链表状态:

完成反转

当 变为 时,循环结束。

返回 ,它指向反转后的链表头节点()。

 

:

当链表为空或仅有一个节点时,直接返回 。

实例:

  1. 第一次调用
    • 指向节点 。
    • 调用 ,即递归进入 的情况。
  2. 第二次调用
    • 指向节点 。
    • 再次调用 ,进入 的情况。
  3. 继续递归调用
    • 继续类似步骤,递归进入 、、 的情况。
  4. 最后一次调用(终止条件)
    • 指向节点 ,而 为 。
    • 根据终止条件,直接返回节点 作为新的头节点 。

递归回溯阶段(反转指针)

  1. 回溯到
    • 仍然是节点 。
    • ,即 ,链表变成 。
    • ,断开 的原指针。
  2. 回溯到
    • ,即 ,链表变成 。
    • ,断开 的原指针。
  3. 回溯到
    • ,即 ,链表变成 。
    • ,断开 的原指针。
  4. 回溯到
    • ,即 ,链表变成 。
    • ,断开 的原指针。

最终返回 ,即节点 ,完成整个链表的反转。

到此这篇单链表 逆序(单链表逆序代码)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • 快手跳转链接怎么弄(快手的链接怎么弄)2024-12-30 11:54:10
  • 跳转链接怎么弄出来(跳转链接怎么弄出来手机)2024-12-30 11:54:10
  • 单向链表存储密度高吗(单向链表在内存中是连续存储的)2024-12-30 11:54:10
  • 跳转链接制作工具(跳转链接制作工具有哪些)2024-12-30 11:54:10
  • 短链接防红跳转(短链接跳转浏览器)2024-12-30 11:54:10
  • 游戏代码网站链接(游戏代码网站链接怎么打开)2024-12-30 11:54:10
  • 单向链表是什么(单向链表是否有环的最佳方法)2024-12-30 11:54:10
  • 逆向单向链表(编写实现单向链表逆转的程序)2024-12-30 11:54:10
  • 单向链表在内存中是连续存储的(单向链表已经可以实现非连续存储为什么还需要双向链表)2024-12-30 11:54:10
  • 对于有头指针和尾指针的单向链表(在设头、尾指针的单链表中,与长度n有关的操作是)2024-12-30 11:54:10
  • 全屏图片