You need to enable JavaScript to run this app. 反转链表后打印ListNode的val值时出现NullPointerException错误
优惠活动
大模型
产品
解决方案
定价
更多

反转链表后打印ListNode的val值时出现NullPointerException错误

NullPointerException问题根因

  • 该错误触发的核心原因是你访问.val属性的palindrome变量本身为null,Java中不允许访问null对象的成员属性和方法,和打印语句本身逻辑无关。
  • 链表反转场景下导致该变量为null的常见原因:
    1. 反转方法边界处理错误:如果输入的原链表为空、或者仅含1个节点时,你的反转逻辑错误返回了null值
    2. 反转逻辑终止条件错误:反转循环结束时错误返回了已经移动到null位置的游标指针,而非反转后的新头节点
    3. 遍历逻辑越界:你在遍历反转后的链表时,游标走到了链表尾部的next位置(该位置本身为null),赋值给palindrome后再访问属性触发报错

修复方案

  1. 先增加空校验再访问节点属性,可先将打印逻辑替换为如下代码定位问题:
if (palindrome != null) {
    System.out.println(palindrome.val);
} else {
    System.out.println("palindrome节点为空,请排查上游赋值逻辑");
}
  1. 核对你的链表反转逻辑是否符合标准实现,重点检查返回值是否正确:

标准单链表反转参考实现如下:

public ListNode reverseList(ListNode head) {
    ListNode prev = null;
    ListNode curr = head;
    while (curr != null) {
        ListNode nextTemp = curr.next;
        curr.next = prev;
        prev = curr;
        curr = nextTemp;
    }
    // 循环终止时curr为null,prev才是反转后的新头节点,不要错误返回curr
    return prev;
}
  1. 检查反转方法调用后的赋值逻辑,确认是否将反转方法的返回值正确赋值给了palindrome变量。

内容的提问来源于stack exchange,提问作者Syed Ali Reza Hussain

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.19 09:36:08