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

链表遍历疑问:为何以下遍历方式会陷入无限循环?

为啥这种链表遍历会陷入无限循环?

嘿,这个问题我太熟了!绝大多数时候,这种无限循环都是因为你在遍历过程中根本没让指针往前走。咱们拿最常见的错误写法举个例子:

# 错误示范
current_node = linked_list_head
while current_node is not None:
    print(current_node.value)
    # 这里漏掉了关键的一步:current_node = current_node.next

你看,每次循环里,current_node始终死死盯着链表的第一个节点,永远不会变成None,循环条件永远成立,可不就无限跑下去了嘛!

还有一种容易踩坑的情况——链表本身就是循环链表(最后一个节点的next没有指向None,反而绕回了前面某个节点,甚至头节点)。这时候哪怕你正常移动指针,也会一直在圈里打转,比如:

# 假设链表是循环的:1 -> 2 -> 3 -> 1
current_node = linked_list_head
while current_node is not None:
    print(current_node.value)
    current_node = current_node.next

这种情况下,指针会在1→2→3→1的循环里无限绕圈,永远碰不到作为终止条件的None,自然停不下来。

总结一下常见的两个核心原因:

  • 遍历循环里没有更新当前节点的指针,始终停留在同一个节点上
  • 链表本身是循环结构,不存在尾节点(没有节点的next指向None)

如果是第一种情况,补上current_node = current_node.next这行关键代码就行;如果是第二种,那你得先判断链表是否存在环,或者在遍历过程中记录已经访问过的节点,避免重复绕圈。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:38:28