zoukankan      html  css  js  c++  java
  • 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;
        }
    }
    
  • 相关阅读:
    简单粗暴,微生物生态研究中常用数据库简介--转载
    sliva数据库简介--转载
    DriverDBv2---人类肿瘤driver基因数据库
    lncrnablog
    胞外囊泡与外泌体数据库--转载
    Oncomine: 一个肿瘤相关基因研究的数据库--转载
    circRNA研究手册
    常用Gene ID转换工具--转载
    miRNA几大常用的数据库
    zk使用通知移除节点
  • 原文地址:https://www.cnblogs.com/linkanyway/p/js-stack-array.html
Copyright © 2011-2022 走看看