leetcode206 链表:反转链表
反转链表
反转链表,常用的方法有迭代,栈反转,递归反转。
迭代
比如,现有链表1->2->3->4->5,
首先,从第一个节点开始,反转,将1->null,
接着向下一个节点2,迭代,反转,将2->1,
接着向下一个节点3,迭代,反转,将3->2,也就是变成了3->2->1,依此类推。
关键的几点:
* 初始化当前节点curr、上一个节点prev;
* 循环。
* 记住下一个节点。
* 反转。将当前节点指向上一个节点,形成反转;
* 迭代。向后迭代,找到新的"当前节点"、"上一个节点"。
如下:
public ListNode reserveListNode(ListNode head) {
//上一个节点
ListNode prev=null;
//当前节点
ListNode curr=head;
//当前节点不为null,就循环
while( curr!=null) {
//先记住下一个节点
ListNode nextNode= curr.next;
//反转。将当前节点指向上一个节点,形成反转
curr.next= prev;
//向后迭代。
//迭代之后,新的上一个节点 pre,就是之前的"当前节点" curr
//迭代之后,新的当前节点 curr,就是之前的"下一个节点" nextNode
prev= curr;
curr= nextNode;
}
//最后prev会变成反转后的头节点,返回prev
return prev;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了