java递归方式实现链表翻转
ListNode reverse(ListNode head) {
if (head.next == null) return head;
ListNode last = reverse(head.next);
head.next.next = head;
head.next = null;
return last;
}
上面的代码只需要输入头结点即可实现链表翻转。只看代码可能不容易理解,所以我做了一些图方便自己理解,也方便下次忘记了进行再次复习,提高效率,也希望能帮助一些其它的同学。
假设链表:
第一句代码:容易理解,从头结点一直递归到最后一个不为空的节点
第二句代码:并创建lastNode 将head节点的值复制给它。
第三句代码:将当前的节点的下一个节点的下一个节点位置设置为当前节点(也就是图中的值为6的节点指向值为5的节点)。
第四句代码:将当前节点的下一个节点位置置为NULL。
同样的返回lastNode节点 步骤和上面一样。
这是直接将链表翻转,还有更多的例如: