栈
(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 = []
        }
    }
}