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

链表技术疑问:单个对象为何能存储多地址与数据?

关于链表节点与插入操作的疑问解答

嘿,这两个问题其实是学习链表时很常见的误解,我来给你掰扯清楚~

单个节点对象并没有存储多组数据和地址

你可能混淆了「单个节点对象」和「整个链表」的概念:

  • 每个newNode本质上是独立的单个对象,它只包含两个核心属性:data(用来存当前节点的单个数据值)和next(用来存下一个节点对象的内存地址)。
  • 你看到的data1、next1、data2、next2……其实是多个节点对象串联起来的整体效果,不是单个节点的属性。比如链表的结构是:节点1(data=5, next=节点2的地址) → 节点2(data=11, next=节点3的地址) → ...,每个节点只管好自己的那一份数据和下一个节点的指向,整个链表靠这种链式连接形成一个序列。

之前学的「单个变量存多份数据要创建新对象」是完全正确的,链表其实就是在践行这个逻辑——每多一份数据,就新建一个节点对象,然后通过next把它们串起来。

执行list.insert(11)后原数据5未被删除的原因

链表的insert操作默认是添加新节点,而不是覆盖原有数据:

  • 如果是头部插入:新节点的next会指向原来存5的头节点,链表就变成11 → 5 → ...,两个数据都保留。
  • 如果是中间/尾部插入:比如在5后面插入11,原来存5的节点的next会被更新为指向新的11节点,新节点的next指向原来5后面的节点(如果有的话),这样5和11都在链表的序列里。
  • 只有当你执行删除操作(比如list.delete(5)),或者直接修改某个节点的data属性(比如node.data = 11)时,原数据5才会被移除或替换。

简单说,insert是「加」,不是「换」,所以原数据自然不会消失~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 10:07:37