在面向对象编程中,Node
类通常用于表示链表中的一个节点,包含数据部分和指向下一个节点的指针。Stack
(栈)是一种后进先出(LIFO, Last In First Out)的数据结构,只允许在一端(称为栈顶)进行插入(push)和删除(pop)操作。
使用 Node
类为 Stack
类创建 push()
方法的优势在于:
链式栈适用于以下场景:
push()
方法下面是一个使用 Node
类为 Stack
类创建 push()
方法的示例代码:
class Node {
constructor(value) {
this.value = value;
this.next = null;
}
}
class Stack {
constructor() {
this.top = null;
this.size = 0;
}
push(value) {
const newNode = new Node(value);
newNode.next = this.top;
this.top = newNode;
this.size++;
}
// 其他方法如 pop(), peek(), isEmpty() 等可以根据需要实现
}
// 示例使用
const stack = new Stack();
stack.push(1);
stack.push(2);
stack.push(3);
console.log(stack.top.value); // 输出 3
console.log(stack.size); // 输出 3
pop()
操作会报错原因:当栈为空时,尝试访问 top
节点的 next
属性会导致 null
引用错误。
解决方法:在执行 pop()
操作前,先检查栈是否为空。
pop() {
if (this.isEmpty()) {
throw new Error("Stack is empty");
}
const poppedValue = this.top.value;
this.top = this.top.next;
this.size--;
return poppedValue;
}
isEmpty() {
return this.size === 0;
}
通过上述方法,你可以使用 Node
类为 Stack
类创建一个 push()
方法,并解决一些常见问题。
领取专属 10元无门槛券
手把手带您无忧上云