反转链表LeetCode206

本文介绍了如何解决LeetCode上的第206题——反转链表。通过递归和迭代两种方法详细讲解了解题思路,并提供了Java代码实现。递归法中,利用三个辅助节点,不断调整链表指向,最终实现链表反转。这种方法易于理解,且能够有效解决问题。
摘要由CSDN通过智能技术生成

反转链表LeetCode206

反转一个单链表
示例:
输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL

解题方法分为递归法和迭代法。
其中递归法比较容易理解;

用ListNode设出来的的是节点

思路:借助三个节点,分别是空指针(作用就是作为一个中间值,没有其他意义),另外两个就是连着的指针,从头开始走。
注意:他们三个位置是连着的

假设三个节点分别为:0,1, 2, 3
文字描述:
先做排除空值的情况,0是空值,1,2,3都是有值的。将1指向0,然后将1的值赋给0,这时候1指向0,断开之前的1指向2,原来的一条链现在形成两个单独的链,然后使这三个节点整体向后移动一个单位
在这里插入图片描述

继续刚才的操作,最后全部都会反转过来,不满足循环条件自己停止,这时候0这个空节点在最前面,打印输出即可
在这里插入图片描述

代码实现:

class Solution {
    public ListNode reverseList(ListNode head) {
        ListNode dummy = new ListNode();
        ListNode prev = null;
        while( head != null){
        ListNode next = head.next;
            head.next = prev;
            prev = head;
            head= next;
       }
       return prev;
    }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

万物皆可der

感谢支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值