es6实现栈结构(含复杂度)
1. 代码实现
class Stack {
constructor() {
this.list = [];
}
push(value) {
this.list.push(value);
}
pop() {
return this.list.pop();
}
peek() {
return this.list[this.list.length - 1]
}
size() {
return this.list.length;
}
isEmpty() {
return this.list.length === 0;
}
clear() {
this.list = [];
}
toString() {
return this.list.join(",")
}
}
2. 线上代码(含测试代码)
3. 复杂度
- 进栈:时间、空间复杂度均为
O(1)
- 出栈:时间、空间复杂度均为
O(1)
4. 栈思想
- 后进先出(LIFO)
- 后面来的,排在前面(比如把乒乓球放在杯子)
5. 使用场景
-
函数调用栈
- 多个函数嵌套调用时,最后被调用的函数先执行完毕,最先调用的函数最晚执行完毕
- 函数调用栈示例
-
页面栈
- 例如:先访问首页->商品详情->下单结算页;返回顺序:下单结算页->商品详情->首页
6. 相关文章
- 上一篇:已是第一篇
- 下一篇:es6实现队列数据结构(基于数组)