上面代码使用的是非递归方式,这个问题也可以通过递归的方式解决。代码如下:public Node reverse(Node current) { if (current == null || current.next == null) return current; Node nextNode = current.next; current.next = null; Node reverseRest = reverse(nextNode); nextNode.next = current; return reverseRest; }递归的方法其实是非常巧的,它利用递归走到链表的末端,然后再更新每一个node的next 值 (代码倒数第二句)。 在上面的代码中, reverseRest 的值没有改变,为该链表的最后一个node,所以,反转后,我们可以得到新链表的head。
参考:
http://stackoverflow.com/questions/354875/reversing-a-linked-list-in-java-recursively
x
海报分享
扫一扫,分享海报
打赏
打赏
beiyetengqing
你的鼓励将是我创作的最大动力
C币余额
2C币4C币6C币10C币20C币50C币
确定
举报
一键三连
点赞Mark关注该博主, 随时了解TA的最新博文
已标记关键词清除标记