前端仔的算法之路(一)-栈基本概念

179 阅读1分钟

栈的概念

栈是一种遵从后进先出原则的有序集合,添加新元素的一端称为栈顶,另一端称为栈底,每次对栈的操作只能从栈顶进行存取操作。

概念讲完该到灵魂画师上线了

无标题.png

实现一个栈

当前示例使用纯js去实现

class Stack {
    constructor() {
        this.data = []
        // 记录栈的数据个数
        this.count = 0
    }
    
    // 入栈
    push(item) {
        // 存储数据后count自增
        this.data[this.count++] = item
    }
    
    // 出栈
    pop() {
        // 判断栈是否为空
        if (this.isEmpty()) {
            return
        }
        // 缓存被删除的数据
        const temp = this.data[this.count - 1]
        // 删除数据后count自减
        delete this.data[--this.count]
        return temp
    }
    
    // 获取栈顶值
    top() {
      if (this.isEmpty()) {
        return
      }
      return this.data[this.count - 1]
    }
    
    // 是否为空
    isEmpty() {
        this.count === 0
    }
    
    // 栈内元素个数
    size() {
      return this.count
    }
    
    // 清空栈
    clear() {
      this.data = []
      this.count = 0
    }
}

前端仔的算法之路(二)-实现一个时间复杂度O(1)的minStack - 掘金 (juejin.cn)

前端仔的算法之路(三)-利用递减栈实现每日温度 - 掘金 (juejin.cn)