双向链表中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
相关产品推荐
相关产品推荐

