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

Python实现LinkedList时addNode()方法报错int对象无next属性

问题根因
  • 实例化LinkedList时传入的参数是整数1,但构造函数未做类型适配,直接将int类型值赋值给self.head和self.tail。首次调用addNode()时,代码尝试访问int对象的next属性,直接抛出AttributeError: 'int' object has no attribute 'next'。
  • 构造函数使用可变对象ListNode()作为默认参数属于Python常见语法陷阱:默认参数在函数定义阶段就会完成初始化,所有未显式传入head参数的LinkedList实例会共享同一个头节点,后续操作会出现跨实例的数据污染。
修正代码

调整LinkedList构造逻辑,兼容传入数值初始化头节点的使用习惯,同时修复可变默认参数问题:

class ListNode:
    def __init__(self, val=0, next=None):
        self.val = val
        self.next = next
    
class LinkedList:
    def __init__(self, head_val=0):
        # 初始化时统一生成头节点,传入的参数作为头节点的存储值
        self.head = ListNode(head_val)
        self.tail = self.head
    
    def addNode(self, val=0):
        newNode = ListNode(val)
        self.tail.next = newNode
        self.tail = newNode
验证结果

运行原测试代码:

l1 = LinkedList(1)
l1.addNode(2)
l1.addNode(4)

# 遍历输出链表所有节点值
cur = l1.head
while cur:
    print(cur.val)
    cur = cur.next

输出符合预期:

1
2
4

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 21:12:19