栈
是什么
栈是一种遵循后进先出
原则的有序集合。
新添加或待删除的元素都保存在栈的同一端,称为栈顶,另一段叫做栈底。
在栈里,新元素都靠近栈顶,旧元素都靠近栈底
怎么做
class Stack{
constructor(){
this.items = []
}
// 增:栈顶增加一个元素
push(value){
this.items.push(value)
}
// 删:出栈
pop(){
return this.items.pop()
}
// 删:清空
clear(){
return this.items = []
}
// 查:返回栈是否是空
isEmpty(){
return this.items.length === 0
}
// 查:返回栈的大小
size(){
return this.items.length
}
// 查:返回栈顶元素
peek(){
return this.items[this.items.length-1]
}
}
使用方法:
const stack = new Stack();
console.log(stack.isEmpty()); // true
stack.push(5);
stack.push(8);
stack.push(11);
stack.push(15);
console.log(stack.isEmpty()); // false
console.log(stack.size());// 4
console.log(stack.peek());//15
stack.pop();// 15
console.log(stack.size());// 3
console.log(stack.peek());//11
解决了什么问题
vue 中对模板进行解析的时候判断模板字符是否合法就运用了栈,这和很多编辑器在书写代码时候校验我们写的 HTML 元素是否闭合一样的原理。