什么是栈?

原文链接:https://note.noxussj.top/?source=sifo

栈是根底数据结构,栈是一种遵循后进先出准则的有序汇合,增加新元素的一端称为栈顶,另一端称为栈底。操作栈的元素时,只能从栈顶操作(增加、移除、取值)。


实现性能

在 JavaScript 中没有栈,然而能够通过 Array 实现栈的所有性能

  • push () 入栈
  • pop () 出栈
  • top () 获取栈顶值
  • size () 获取栈的元素个数
  • clear () 清空栈

利用场景

  • 十进制转二进制
  • 判断字符串的括号是否无效
  • 函数调用堆栈
  • 二叉树前序遍历(迭代形式)
  • ...

根底案例

通过数组实现

    const stack = [1]    stack.push(2) // 入栈    stack.pop() // 出栈    const top = stack[0] // 获取栈顶值    const size = stack.length // 获取栈的元素个数    stack.length = 0 // 清空栈

通过类模仿实现

    class Stack {        constructor() {            this.data = {}            this.count = 0        }            /**         * 入栈         */        push(item) {            this.data[this.count++] = item                return item        }            /**         * 出栈         */        pop() {            if (this.count > 0) {                const item = this.data[this.count - 1]                delete this.data[--this.count]                    return item            } else {                return -1            }        }            /**         * 获取栈顶值         */        top() {            if (this.count > 0) {                return this.data[this.count - 1]            } else {                return -1            }        }            /**         * 获取栈的元素个数         */        size() {            return this.count        }            /**         * 清空栈         */        clear() {            this.data = {}            this.count = 0        }    }        const stack = new Stack()        stack.push('a')    stack.push('b')    stack.push('c')        stack.pop()    

原文链接:https://note.noxussj.top/?source=sifo