链表翻转递归实现

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节点 步骤和上面一样。
这是直接将链表翻转,还有更多的例如:

翻转链表前N个节点
翻转链表的M-N位置的节点
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值