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,肯定报错了。

相关推荐
hdsoft_huge5 小时前
小程序弱网 / 无网场景下 CacheManager 离线表单与拍照上传解决方案
java·小程序·uni-app
麦嘟学编程5 小时前
开发环境搭建之JDK11+maven3.9.8+tomcat9安装
java
小坏讲微服务5 小时前
使用 Spring Cloud Gateway 实现集群
java·spring boot·分布式·后端·spring cloud·中间件·gateway
wa的一声哭了5 小时前
hf中transformers库中generate的greedy_search
android·java·javascript·pytorch·深度学习·语言模型·transformer
.格子衫.5 小时前
Maven的下载与安装
java·maven
Override笑看人生5 小时前
gitlab中maven私有库使用备忘
java·gitlab·maven
不知几秋5 小时前
配置JDK和MAVEN
java·开发语言·maven
没有bug.的程序员5 小时前
Spring Cloud Gateway 路由与过滤器机制
java·开发语言·spring boot·spring·gateway
飞鱼&5 小时前
java数据结构
数据结构·二叉树·散列表·红黑树
有意义6 小时前
为什么说数组是 JavaScript 开发者必须精通的数据结构?
前端·数据结构·算法