LeetCode206.反转链表(JAVA)

1.题目

2.思路

1.这里使用双指针法

如上图所示,定义current和pre两个指针,让cur.next 指向 pre 这样就实现了链表的反转。

但是cur.next指向了pre后,cur后的所有元素就访问不到了(链断了),所以就需要一个next指针来保存cur后的元素。

3.代码

java 复制代码
class Solution {
    public ListNode reverseList(ListNode head) {
        ListNode pre = null;
        ListNode cur = head;
        ListNode next = null;  //注意不要在这个地方赋值 ListNode next =cur.next;
        while (cur != null) {
        	//防止断链
            next = cur.next;  
            //反转链表
            cur.next = pre;
            //移动位置
            pre = cur;
            cur = next; 
        }
        return pre;
    }
}

4.我的错误

java 复制代码
class Solution {
    public ListNode reverseList(ListNode head) {
        ListNode pre = null;
        ListNode cur = head;
        ListNode next =cur.next;  //我在这个地方初始化了next
        while (cur != null) {
        	//反转
            cur.next = pre;
            //更新位置
            pre = cur;
            cur = next; 
            next =cur.next;
        }
        return pre;
    }
}

这是我写的第一版,最后会报一个空指针错误。错误代码出现在循环里的这一行代码中

复制代码
  next =cur.next;

这是因为当反转完最后一个节点的时候,要更新位置了,cur=next 让cur已经指向了null,这时候再

使用next=cur.next,也就相当于null.next,肯定报错了。

相关推荐
M-Robots echo4 小时前
轻量化裁剪方案解析:M-Robots 模块化构建,适配高低端各类机器人硬件平台
java·机器人·ros·开源社区·atomgit·m-robots
不可求~5 小时前
多模型路由怎么落地:把任务分流写进项目的最小实现
java·前端·数据库
mldong6 小时前
用 DDD 设计工作流引擎:聚合根与充血模型
java·架构
mqiqe7 小时前
AgentScope Java Harness:4. 双层记忆系统 让 Agent 拥有真正的“长期大脑“
java·开发语言
伍一517 小时前
03-文件管理模块-一个看似简单的模块藏着多少细节
java·ruoyi·若依
gugucoding7 小时前
46. 【Java】JUC并发工具:让并发更简单
java·开发语言
hold?fish:palm7 小时前
24 回文链表
数据结构·c++·链表
Nebula_g7 小时前
JavaSE基础语法:面向对象高级(代码中的成分)
java·开发语言·编程·javase·技术栈·高级语法
AC赳赳老秦8 小时前
公开图片 OCR 数据提取:OpenClaw 合规采集公开信息图,识别文字与表格并转化为结构化数据
java·大数据·前端·数据库·python·php·openclaw
小强库计算机毕业设计9 小时前
SpringBoot+Vue3 学生宿舍管理系统实战
java·spring boot·后端·vue·学生宿舍管理系统