栈和队列
Categories: Share
队列 queue 是先进先出 栈是 stack 后进先出
JavaScript 中的堆栈
JS 可以用数组来模拟堆栈,主要是因为数组提供了比较全的方法,既可以操作顶部,也可以操作底部。 队列是先进先出的,出队列的话可以用数组的 shift 方法来出队列 栈是先进后出的,可以用数组的 pop 方法来出栈
栈(stack)
后进先出,新添加的元素或待删除的元素保存在栈顶(即后进入的元素),另一端为栈底(即先进入的元素)。在栈中,新元素总是靠近栈顶,旧元素总是靠近栈底。
class Stack {
constructor() {
this.items = []
}
// 向栈顶新加元素
push(element) {
this.items.push(element)
}
// 从栈顶弹出元素,返回的是栈顶的元素
pop() {
return this.items.pop()
}
// 返回栈顶的元素,并不弹出元素
peek() {
return this.items[this.items.length - 1]
}
// 判断栈是否为空
isEmpty() {
return this.items.length === 0
}
// 返回栈的长度
size() {
return this.items.length
}
// 清空栈
clear() {
this.items = []
}
// 打印栈内所有的元素
print() {
console.log(this.items.toString())
}
}
// 验证
const stack = new Stack()
console.log(stack.isEmpty()); // true
stack.push(5);
stack.push(8);
console.log(stack.peek()); // 8
stack.push(11);
console.log(stack.size()); // 3
console.log(stack.isEmpty()); // false
stack.push(15);
stack.pop();
stack.pop();
console.log(stack.size()); // 2
stack.print(); // 5,8
stack.clear();
stack.print();