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

反转链表时为什么需要将head赋值为prev才能完成反转操作?

问题属性说明

这个问题和泛型完全没有关系,属于链表头指针的维护逻辑问题。

head = prev的必要性

  • 你实现的LinkedList类中存在成员变量head,用于指向当前链表的首个节点,链表的遍历、输出等常规操作都默认从这个head节点开始执行。
  • 反转循环的终止条件为head == null:循环执行结束时,所有节点的指针已经完成反转,此时prev变量正好指向反转后新链表的首个节点,而成员变量head此时的值为null。
  • 如果你省略head = prev这行赋值操作,后续执行链表输出逻辑时会从值为null的head开始遍历,自然会得到空列表[]的结果。

额外代码风险提示

你当前代码里的打印语句存在空指针异常隐患:

System.out.println("head: " + head.next + "\nprev: " + prev.next);

当循环处理到原链表最后一个节点时,next变量会被赋值为null,执行head = next之后head已经是空值,此时访问head.next会直接抛出空指针异常,建议把打印语句调整到head = next语句之前执行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 14:15:06