54 阅读1分钟
  • 栈(stack):它是一种运算受限的线性表,后进先出(LIFO)

    LIFO(last in first out)表示就是后进入的元素, 第一个弹出栈空间. 类似于自动餐托盘, 最后放上的托盘, 往往先把拿出去使(后进先出)

image.png

如图,2方块必须等3方块出来了才能才能出来,1方块必须等3方块与2方块出来了才能出来

  • 栈结构的实现(JavaScript)
class Stack {
            constructor() {
                // 给栈创造引用空间
                this.item = []
            }
            // 向栈顶添加元素   数组的最后添加元素
            push(el) {
                this.item.push(el)
            }
            // 移除栈顶元素,并返回栈顶元素(数组最后一个元素)
            pop() {
                let delnode = this.item.pop()
                return delnode
            }
            // 返回栈顶元素(数组最后一个元素),不对栈进行其他操作
            peek() {
                let index = this.item.length - 1
                return this.item[index]
            }
            // 判断栈是否为空 栈为空true  数组的length长度来判断栈是否为空
            isEmpty() {
                return this.item.length == 0
            }
            // 清空栈
            clear() {
                this.item = []
            }
            // 查询栈的长度
            size() {
                return this.item.length
            }
        }
        // 创一个pp的栈
        let pp = new Stack()
        pp.push(2)
        pp.push(4)
        console.log(pp,pp.pop());

image.png