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

优先队列代码疑问:移除循环条件片段后触发NoneType异常原因咨询

问题原因拆解
  • 原循环里的current.next是用来防止遍历超出链表末尾的。当你遍历到链表最后一个节点时,current.next是None,这时候循环会停止,你可以直接把新节点挂在这个最后节点的后面。
  • 要是删掉current.next,循环条件只剩下优先级判断的话,当所有现有节点的优先级都比新节点低时,循环会一直执行current = current.next,直到current变成None(因为最后一个节点的next就是None)。接下来再判断循环条件时,你要访问current.prior,但None根本没有prior属性,自然就抛出那个异常了。
  • 举个实际场景:链表只有一个节点X,新节点的优先级比X高。原逻辑里,因为current.next是None,循环停在X,把新节点接在X后面。如果去掉current.next,循环会先判断X的prior小于新节点,然后current变成X.next也就是None,下一轮循环要拿None.prior来比较,直接报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 00:01:22