You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java链表反转代码异常排查:输出不符预期请求协助

链表反转代码错误排查

错误原因分析

你的代码核心问题在于tempNode的赋值时机错误,导致第一次循环就丢失了后续节点的引用:

  1. 初始时tempNode = currNode,此时tempNode和currNode指向同一个节点(输入链表的头节点3)。
  2. 循环第一行执行currNode.next = prevNode(将3的next设为null),这会同时修改tempNode.next(因为两者指向同一个对象),导致tempNode.next变成null。
  3. 后续执行currNode = tempNode.next时,currNode被赋值为null,循环直接结束,只处理了第一个节点,最终返回的新头节点是3,输出自然是3→null。

修正后的代码

public Node reverseNode(Node head){
    Node prevNode = null ;
    Node currNode = head ;
    Node tempNode; // 无需提前赋值
    while (currNode != null) {
        tempNode = currNode.next; // 先保存当前节点的下一个节点,避免丢失引用
        currNode.next = prevNode ; 
        prevNode = currNode ; 
        currNode = tempNode ; 
    }
    return prevNode; // 最后prevNode就是新的头节点,无需再赋值给head
}

修正说明

  • 把tempNode = currNode.next移到循环的最开头,在修改currNode.next之前就保存好后续节点的引用,确保不会丢失链表的剩余部分。
  • 去掉了冗余的head = prevNode,因为直接返回prevNode即可(循环结束时prevNode指向原链表的最后一个节点,也就是反转后的头节点)。

内容的提问来源于stack exchange,提问作者user22033523

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 19:08:18