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

Python链表display函数无法访问next节点数据求助

问题分析与修复

你的display函数报错是因为循环逻辑导致最后一次访问了None的data属性。

错误原因

你的链表头节点self.head是一个空节点(data=None),display函数的循环逻辑存在顺序问题:

  1. 初始cur_node = self.head
  2. 先执行cur_node = cur_node.next,再尝试添加data
  3. 当循环到最后一个有效节点时,cur_node.next是None,执行cur_node = cur_node.next后,cur_node变成None,此时调用cur_node.data就会触发AttributeError——因为None没有data属性。

修复后的display函数

有两种简单的修复方式:

方式一:从第一个有效节点开始遍历

直接跳过空的头节点,从self.head.next开始遍历:

def display(self):
    elements = []
    cur_node = self.head.next  # 从第一个带数据的节点开始
    while cur_node is not None:
        elements.append(cur_node.data)
        cur_node = cur_node.next
    print(elements)

方式二:调整循环内的执行顺序

先判断cur_node.next是否存在,再移动节点并添加数据:

def display(self):
    elements = []
    cur_node = self.head
    while cur_node.next is not None:
        cur_node = cur_node.next
        elements.append(cur_node.data)
    print(elements)

额外提示

你的lenght方法拼写错误,正确拼写是length,可以顺便修正。

修复后运行代码,调用li.display()会输出[5, 5],符合预期。

内容的提问来源于stack exchange,提问作者Faustino Da Silva

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 12:50:21