Javascript 堆栈的模拟

栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。

Javascript对栈的封装模拟:

/**
 * stack栈类型
 */
class Stack {


    /**
     * 构造函数
     */
    constructor() {
        this.items = [];
    }


    /**
     * push 可向数组的末尾添加元素
     * @param element
     */
    push(element) {
        // push element into the items
        this.items.push(element);
    }


    /**
     * pop 返回并删除最后一个元素
     * @returns {*}
     */
    pop() {
        // return top most element in the stack
        // and removes it from the stack
        // Underflow if stack is empty
        if (this.items.length === 0)
            return "Underflow";
        return this.items.pop();
    }


    /**
     * 返回最后一个元素,但不删除
     * @returns {*}
     */
    peek() {
        // return the top most element from the stack
        // but does'nt delete it.
        return this.items[this.items.length - 1];
    }

    /**
     * 是否空
     * @returns {boolean}
     */
    isEmpty() {
        // return true if stack is empty
        return this.items.length === 0;
    }

    /**
     * 打印栈
     * @returns {string}
     */
    printStack() {
        let str = "";
        for (let i = 0; i < this.items.length; i++)
            str += this.items[i] + " ";
        return str;
    }
}
posted @ 2019-03-05 17:26  linkanyway  阅读(264)  评论(0编辑  收藏  举报