zoukankan      html  css  js  c++  java
  • 栈是一种遵从后进先出(LIFO)原则的有序集合。新添加或待删除的元素都保存在栈的同一端,称为栈顶,另一端称为栈底。在栈里,新元素都靠近栈顶,旧元素都接近栈底。

    class Stack {
        constructor(){
            this.items = []
        }
    }
    Stack.prototype.push = function(element){
        this.items.push(element)
    }
    Stack.prototype.pop = function(){
        return this.items.pop()
    }
    //返回栈顶元素,不对栈做任何修改
    Stack.prototype.peek = function(){
        return this.items[this.items.length-1]
    }
    Stack.prototype.isEmpty = function(){
        return this.items.length == 0
    }
    Stack.prototype.clear = function(){
        this.items = []
    }
    Stack.prototype.size = function(){
        return this.items.length
    }

    创建一个基于JavaScript对象的Stack类

    class Stack {
        constructor(){
            this.count = 0
            this.items = {}
        }
    }
    Stack.prototype.push = function(element){
        this.items[this.count] = element
        this.count++
    }
    Stack.prototype.isEmpty = function(){
        return this.count == 0
    }
    Stack.prototype.size = function(){
        return this.count
    }
    Stack.prototype.pop = function(){
        if(this.isEmpty){
            return undefined
        }
        this.count--
        const result = this.items[this.count]
        delete this.items[this.count]
        return result
    }
    Stack.prototype.peek = function(){
        if(this.isEmpty){
            return undefined
        }
        return this.items[this.count-1]
    }
    Stack.prototype.clear = function(){
        this.items = {}
        this.count = 0
        // while(!this.isEmpty()){
        //     this.pop()
        // }
    }
    Stack.prototype.toString = function(){
        if(this.isEmpty){
            return ''
        }
        let str = `${this.items[0]}`
        for(let i = 1;i < this.count;i++){
            str = `${str},${this.items[i]}`
        }
        return str
    }
    

    十进制转二进制

    function decimalToBinary(decNumber){
        let number = decNumber
        const s = new Stack()
        let rem;
        let binaryStr = ''
        while(number > 0){
            rem = Math.floor(number%2)
            s.push(rem)
            number = Math.floor(number/2)
        }
        while(!s.isEmpty()){
            binaryStr += s.pop().toString()
        }
        return binaryStr
    }
    

      

  • 相关阅读:
    ssh 免密
    SCALA XML pattern attrbute(属性)
    数据库分区的概念
    Intellij IDEA 快捷键整理
    笔记--Linux
    netstat
    笔记--MySQL相关操作
    ip地址
    使用ASMCMD管理Oracle ASM
    使用RMAN执行Oracle ASM数据迁移
  • 原文地址:https://www.cnblogs.com/zhenjianyu/p/13221743.html
Copyright © 2011-2022 走看看