第 60 期(数据结构-栈):栈和栈的模拟
wingmeng opened this issue · comments
Wing Meng commented
概念:
栈是一种线性数据结构,遵从后进先出(LIFO)原则的有序集合,一个栈可以对数据按照顺序进行组织和管理。
新添加的或是待删除的元素都保存在栈的末尾。我们称作栈顶,而另一端我们称作栈底。
理解:
我们可以把栈想象为只有一端开口的管子,我们可以往管子里塞球,塞进去的球会朝底部方向堆积,这个操作称为 入栈;
当我们需要取出球时,肯定只能从开口的一侧开始取,取球的操作称为 出栈;
最外侧的球是最后一个放进去的,它被先取出来,这称作 后进先出。
栈的模拟:
class Stack {
constructor() {
this.item = [];
}
// 添加一个(或几个)新元素到栈顶
push(element) {
items.push(element);
}
// 移除栈顶的元素,同时返回被移除元素
pop() {
return items.pop();
}
// 返回栈顶元素,但不对栈做修改
peek() {
return items[items.length-1];
}
// 判断是否为空栈(没有任何元素)
isEmpty() {
return items.length === 0;
}
// 返回栈里的元素个数
size() {
return items.length;
}
// 清空栈
clear() {
items = [];
}
}