栈
(Stack)
栈,又叫堆栈,是和列表类似的一种数据结构,但是却更高效,因为栈内的元素只能通过列表的一端访问,称为栈顶,数据只能在栈顶添加或删除,遵循 先入后出(LIFO,last-in-first-out) 的原则。
也就是最新添加的元素会被最早移除。 在栈里,新元素都靠近栈顶,旧元素都接近栈底。 而栈中项的插入(叫做推栈/压栈)和移除(叫做弹栈/出栈),只发生在一个位置——栈的顶部。
我们可以把栈想象成一个箱子。我们往这个箱子里面放书,最先放进去的会放在箱子的底部(栈底)后面放的会依次堆积在上面。这样当我们需要取书的时候就需要从最上面(栈顶)一本一本来取。 这就是栈模式(先进后出)
栈的操作主要有两种
入栈: 将元素压入栈中 (push) 出栈: 将栈顶元素出栈 (pop)
栈的实现
我们采用 es6 class 模式实现一个栈 普通的栈常用的有以下几个方法:
1、push 添加新元素到栈顶
2、pop 栈顶元素出栈,同时返回被移除的元素
3、peek 返回栈顶元素,不对栈做修改
4、isEmpty 栈内无元素返回 true,否则返回 false
5、size 返回栈内元素个数
6、clear 清空栈
class stack {
constructor() {
// 定义栈
this._items = []
// 入栈
push(item) {
this._items.push(item)
}
// 出栈
pop() {
return this._items.pop()
}
// 栈总数
size() {
return this._items.length
}
// 查看当前栈顶元素
peek() {
return this._items[this._items.length - 1];
}
// 判断栈是否空栈
isEmpty(){
return items.length === 0
}
// 清空栈
clear() {
this._items = []
}
}
}