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

Python链表遍历尾部打印失效与AttributeError问题排查求助

错误原因分析
  • 核心错误出自Node类的初始化逻辑:你在__init__方法中错误将next属性赋值为Node(类本身),而非链表尾节点标准的空值None。
    当traverse函数遍历到最后一个节点时,actual_node.next指向的是Node类对象,并不等于None,因此while循环不会终止。下一步执行print(actual_node.data)时,Node类对象本身不存在实例属性data,直接抛出AttributeError,程序异常中断,循环后的print("----------")自然不会执行。
修复代码

仅需要修改Node类的初始化语句即可:

class Node:
    def __init__(self, data):
        self.data = data
        self.next = None  # 原代码此处错误写为Node,替换为None即可
修复后效果

修改完成后重新运行程序:

  1. 遍历到最后一个节点时,actual_node.next为None,while循环正常退出
  2. 循环后的分割线会正常打印
  3. 无属性错误抛出,程序正常运行结束

可选优化(非必须)

如果想要优化中间节点查找逻辑,可以使用快慢指针法,不需要提前维护链表size,仅遍历一次就能得到中间节点:

def middle_node(self):
    slow = self.head
    fast = self.head
    while fast and fast.next:
        slow = slow.next
        fast = fast.next.next
    print("This is the middle node: " + str(slow))
    print("This is the middle node data: " + str(slow.data))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 21:36:05