
LeetCode 206. 反转链表 java版 多种简单方式,总有一款适合你!超级简单易懂的反转链表 java
初始化新的链表头部为 从旧链表的尾部开始遍历,逐步移动节点。 对于每个节点,将其加入到新链表的开头位置。 递归终止条件:当没有节点或只有一个节点时,返回当前节点。 递归步骤:
发布日期:2025-04-04 23:09:19
浏览次数:11
分类:精选文章
本文共 2131 字,大约阅读时间需要 7 分钟。
反转链表是一项常见的操作,可以通过迭代或递归方法实现。本文将分别介绍两种方法,并通过示例验证它们的正确性。
迭代方法:这种方法的思路是创建一个新链表,将旧链表的节点依次从末尾插入到新链表的开头。具体步骤如下:
null
。代码示例如下:
public class ChainTest { public static ListNode reverseNode(ListNode head) { ListNode prev = null; ListNode cur = head; while (cur != null) { ListNode next = cur.next; cur.next = prev; prev = cur; cur = next; } return prev; } public static void main(String[] args) { ListNode n5 = new ListNode(5); ListNode n4 = new ListNode(4, n5); ListNode n3 = new ListNode(3, n4); ListNode n2 = new ListNode(2, n3); ListNode n1 = new ListNode(1, n2); ListNode reversed = reverseNode(n1); while (reversed != null) { System.out.println(reversed.value); reversed = reversed.next; } } static class ListNode { private int value; private ListNode next; public ListNode(int value) { this.value = value; } public ListNode(int value, ListNode next) { this.value = value; this.next = next; } }}
递归方法:递归方法的思路是将问题分解,假设反转链表的子节点,然后将当前节点插入到反转后的链表开头。
- 反转子节点(
head.next
),得到结果。 - 将当前节点插入到反转结果的前面。
代码示例如下:
public class ChainTest { public static ListNode reverseNode(ListNode head) { if (head == null || head.next == null) { return head; } ListNode last = reverseNode(head.next); head.next.next = head; head.next = null; return last; } public static void main(String[] args) { ListNode n5 = new ListNode(5); ListNode n4 = newώνα付款链接节点(4, n5); ListNode n3 = new ListNode(3, n4); ListNode n2 = new Λ Nodes(2, n3); ListNode n1 = new ListNode(1, n2); ListNode reversed = reverseNode(n1); while (reversed != null) { System.out.println(reversed.value); reversed = reversed.next; } }}
通过以上两种方法,可以轻松实现链表的反转。迭代法推荐用于处理较多节点的情况,因其避免了递归可能导致的栈溢出问题。而递归方法则更便于代码的阅读和理解。根据具体需求选择合适的方法即可。
发表评论
最新留言
不错!
[***.144.177.141]2025年04月16日 02时35分46秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
element-ui:el-input输入数字-整数和小数
2025-03-29
ElementUI-el-progress改变进度条颜色跟文字样式
2025-03-29
ELK应用日志收集实战
2025-03-29
elTable火狐浏览器换行
2025-03-29
15个Python数据处理技巧(非常详细)零基础入门到精通,收藏这一篇就够了
2025-03-29
0基础成功转行网络安全工程师,年薪30W+,经验总结都在这(建议收藏)
2025-03-29
100个电脑常用组合键大全(非常详细)零基础入门到精通,收藏这篇就够了
2025-03-29
10个程序员可以接私活的平台
2025-03-29
10条sql语句优化的建议
2025-03-29
10款宝藏编程工具!新手必备,大牛强烈推荐! 从零基础到精通,收藏这篇就够了!
2025-03-29
10款最佳免费WiFi黑客工具(附传送门)零基础入门到精通,收藏这一篇就够了
2025-03-29
15个备受欢迎的嵌入式GUI库,从零基础到精通,收藏这篇就够了!
2025-03-29
15个程序员常逛的宝藏网站!!从零基础到精通,收藏这篇就够了!
2025-03-29
2023应届毕业生找不到工作很焦虑怎么办?
2025-03-29
2024 年需要了解的顶级大数据工具(非常详细)零基础入门到精通,收藏这一篇就够了
2025-03-29