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

单链表去重代码外层循环含current!=null的原因疑问

为什么移除单链表重复元素的代码要保留current != null在循环条件里?

你测试的1->2->3->null这种正常链表场景下,current != null确实显得多余——毕竟初始current指向头节点(非空),循环又判断了current.nextNode != null,current看起来永远不会为null。但这个条件是为了覆盖异常边界场景,避免代码崩溃,具体原因如下:

  • 处理空链表输入:如果传入的链表本身就是null(头节点为空),初始current就是null。这时候如果循环条件只有current.nextNode != null,直接访问current.nextNode会立刻抛出NullPointerException。加上current != null后,循环直接跳过,代码能安全处理空链表的情况,不会崩溃。
  • 应对逻辑变动后的潜在风险:假设后续有人修改去重逻辑,比如不小心在循环里把current置为null,或者某种极端去重场景下current提前变成null(比如链表所有元素都重复,最后current被置空),current != null能避免后续访问current.nextNode时触发空指针。
  • 提升代码可读性与健壮性:明确写出这个条件相当于给其他读代码的人传递一个信号:这段代码考虑了current为空的边界情况。即使当前逻辑用不到,也能为未来的代码修改预留安全缓冲,避免引入新的bug。

举个简单反例:如果传入空链表,没有current != null的话程序直接报错;加上这个条件,程序会正常返回空链表,符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 11:25:16