Skip to main content

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