LeetCode 验证结果如下图所示:
可以看出使用栈的方式来实现链表的反转执行的效率比较低。 实现方法 2:递归
同样的,我们先用图解的方式来演示一下,此方法实现的具体过程,如下图所示。
实现代码如下所示: public static ListNode reverseList(ListNode head) { if (head == null || head.next == null) return head; // 从下一个节点开始递归 ListNode reverse = reverseList(head.next); head.next.next = head; // 设置下一个节点的 next 为当前节点 head.next = null; // 把当前节点的 next 赋值为 null,避免循环引用 return reverse; }