栈
栈是一种遵从先进后出 (LIFO) 原则的有序集合;新添加的或待删除的元素都保存在栈的末尾,称作栈顶,另一端为栈底。在栈里,新元素都靠近栈顶,旧元素都接近栈底。
在 JavaScript 中我们可以使用数组的原生方法实现一个栈/队列的功能,鉴于学习目的,我们使用类来实现一个栈:
class stack {
constructor() {
this.items = []
}
//入栈
push(element) {
this.items.push(element)
}
//出栈
pop() {
return this.items.pop()
}
//末位
get peek() {
return this.items[this.items.length - 1]
}
//是否为空
get isEmpty() {
return !this.items.length
}
//尺寸
get 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