链表技术疑问:单个对象为何能存储多地址与数据?
关于链表节点与插入操作的疑问解答
嘿,这两个问题其实是学习链表时很常见的误解,我来给你掰扯清楚~
单个节点对象并没有存储多组数据和地址
你可能混淆了「单个节点对象」和「整个链表」的概念:
- 每个
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
相关产品推荐
相关产品推荐

