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

单链表 逆序(单链表逆序代码)p 给你单链表的头节点 请你反转链表 并返回反转后的链表 p 示例 1 输入 head 1 2 3 4 5 输出 5 4 3 2 1 示例 2 输入 head 1 2 输出 2 1 示例 3 输入 head 输出 提示

大家好,我是讯享网,很高兴认识大家。



 <p>给你单链表的头节点  &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。</p> 

讯享网

示例 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. 回溯到
    • ,即 ,链表变成 。
    • ,断开 的原指针。

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


小讯
上一篇 2025-04-22 10:11
下一篇 2025-05-10 23:59

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/199551.html