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

双向链表中Node类next属性引用赋值的疑问及原理咨询

问题一:Node类在双向链表中的工作原理

双向链表的每个节点都是由这个Node类实例化出的对象,它的核心作用是:

  • 用value存储当前节点的业务数据
  • 用next属性保存链表中下一个节点的引用
  • 用prev属性保存链表中上一个节点的引用

这种结构让双向链表能从任意节点出发,既通过next往后遍历,也能通过prev往前遍历,每个节点就像链条上的一环,通过两个引用把所有节点串联成双向的链式结构。

问题二:为什么newNode可以赋值给类型为Node的next属性

你这里的误解在于:const newNode = new Node(value);这行代码已经创建了一个完整的Node类实例,newNode是这个实例的引用,它指向的对象本身就具备value、next、prev三个属性——这些属性在Node类的构造函数里已经完成初始化:

class Node {
  value: any;
  next: Node | null;
  prev: Node | null;

  constructor(value: any) {
    this.value = value; // 初始化节点数据
    this.next = null;   // 初始化next指向为空
    this.prev = null;   // 初始化prev指向为空
  }
}

所以newNode本质就是符合类型要求的Node实例,this.tail!.next = newNode;这行代码只是把当前尾节点的next指向新创建的节点,完全贴合next属性Node | null的类型规则,是合法的链表追加操作。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 12:20:32