JavaScript实现栈算法

什么是栈

栈(stack)是一种运算受限的线性表:

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

其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。

向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;

从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。

JavaScript 代码实现栈结构

 // push() 添加一个新元素到栈顶位置。

        // pop() 移除栈顶的元素,同时返回被移除的元素。

        // peek() 返回栈顶的元素,不对栈做任何修改(该方法不会移除栈顶的元素,仅仅返回它)。

        // isEmpty() 如果栈里没有任何元素就返回 true,否则返回 false。

        // size() 返回栈里的元素个数。这个方法和数组的 length 属性类似。

        // toString() 将栈结构的内容以字符串的形式返回。


        // 初始化栈类

        class Stack {

            constructor(){

                this.items = []

            }

            // push() 添加一个新元素到栈顶位置。

            push(item){

                this.items.push(item)

            }

            // pop() 移除栈顶的元素,同时返回被移除的元素。

            pop(item){

                this.items.pop(item)

            }

            // peek() 返回栈顶的元素,不对栈做任何修改(该方法不会移除栈顶的元素,仅仅返回它)。

            peek(){

                return this.items[this.items.length - 1 ]

            }

            // isEmpty() 如果栈里没有任何元素就返回 true,否则返回 false。

            isEmpty(){

                return this.items.length === 0

            }

            // size() 返回栈里的元素个数。这个方法和数组的 length 属性类似。

            size(){

                return this.items.length

            }

            // toString() 将栈结构的内容以字符串的形式返回。

            toString(){

                let itemStr = ''

                this.items.forEach(item => {

                    itemStr += item + ''

                });

                return itemStr

            }

        }

        const stack = new Stack()

        stack.push(1);

        console.log("栈的初始化:", stack);

        console.log("================");

        stack.push(2);

        console.log("栈的初始化:", stack);

        console.log("================");

        stack.push(3)

        console.log("栈的初始化:", stack);

        console.log("================");

        let strStack = stack.toString()

        console.log(strStack);

你可能感兴趣的:(JavaScript实现栈算法)