es6实现栈(含复杂度)

493 阅读1分钟

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. 相关文章

  • 上一篇:已是第一篇
  • 下一篇:基于数组实现队列(暂未更新)

7. 欢迎指正