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

Python中修改ListNode变量为何未改变链表结构?

Python链表变量赋值为何不改变链表结构?

先看我们定义的链表节点类:

class ListNode:
    def __init__(self, val=0, next=None):
        self.val = val
        self.next = next

创建链表1 -> 2 -> 3 -> None的代码:

a = ListNode(1)
b = ListNode(2)
c = ListNode(3)
a.next = b
b.next = c

执行c = c.next后,链表结构并没有变成1 -> 2 -> None,原因很明确:

  • Python里的变量是指向对象的引用,而非对象本身。变量c最初指向值为3的ListNode对象,同时b.next也指向这个对象。
  • 执行c = c.next时,只是把变量c的指向改成了c.next(也就是None),但完全没有修改原来那个值为3的节点对象,也没改变b.next的指向。b.next依然指向值为3的节点,所以链表结构自然保持不变。

如果要修改链表结构让它变成1 -> 2 -> None,你需要直接修改b.next的指向,比如执行:

b.next = None

这时候b的next不再指向值为3的节点,链表结构就会发生预期的变化。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 20:40:57