JavaScript 数据结构系列目录
文章目录
一、栈的概述
栈是一种遵从 后进先出(LIFO) 原则的一种有序集合。
新添加或将删除的元素都保存在栈的同一端,即 栈顶。
与栈顶相反的另一端称之为 栈底。
通常在栈里,新元素都靠近 栈顶,而旧元素靠近 栈底。
二、创建一个基于数组的栈
我们先来创建一个类来表示栈。
class Stack {
constructor () {
this.items = [];
}
}
在这里,我们需要一种数据结构来保存栈里的数据。这里我们选择数组。
数组允许我们在任何位置添加或删除元素,但由于栈遵循 LIFO 原则,我们需要对元素的插入和删除功能进行限制。
接下来我们要为栈声明一些方法。
1、push 方法
添加一个新元素到栈顶。
因我们使用了数组来保存栈里的元素,所以我们可以在这个方法里面使用数组的 push 来实现。其代码如下:
push(element) {
this.items.push(element);
}
2、pop 方法
移除栈顶的元素。
因栈遵循 LIFO 原则,所以移出去的是最后添加进去的元素。
这里我们可以使用数组里的 pop 方法,其代码如下:
pop() {
this.items.pop();
}
只能使用 push 和 pop 方法添加和删除栈中的元素,这样一来,我们的栈自然就遵从了 LIFO 原则。
此后,我们来为我们的类实现一些额外的辅助方法。
3、seeTop 方法
返回栈顶的元素。
peek() {
return this.items[this.size() - 1];
}
size 方法用来返回栈的长度
4、isEmpty 方法
验证栈内是否为空
isEmpty() {
return this.size(