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

Python链表中node=node.next与node.next赋值的区别及next属性来源问题

链表实现问题解答

问题1:两种next相关写法的核心区别

二者的操作对象和作用完全不同:

  • first_node.next = second_node 是修改节点实例的属性:赋值目标是节点对象本身的next属性,作用是修改链表的拓扑结构,把第一个节点的后继指针指向第二个节点,会改动链表的实际存储内容。
  • node = node.next 是修改局部临时变量的指向:node是__repr__方法内定义的遍历游标变量,这个赋值操作只是把游标从当前节点移动到下一个节点,全程不会修改链表内任何节点的属性,也不会改变链表结构。

问题2:next属性的来源

你贴出的代码只包含了链表容器类LinkedList的实现,完整的链表实现还需要配套自定义的节点类,next就是节点类的自定义实例属性,常见的节点类实现如下:

class Node:
    def __init__(self, data):
        # 存储节点数据
        self.data = data
        # 存储后继节点的引用,默认是空
        self.next = None

你在使用LinkedList时,给self.head赋值的就是Node类的实例,因此__repr__方法里遍历到的node变量都是Node类实例,可以正常调用next属性。如果self.head被赋值为不包含next属性的对象,运行时会直接抛出AttributeError。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 12:42:04