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
    }
    

      

  • 相关阅读:
    《自动化测试工程师进阶之路》系列课程
    开发测试工程师系列课程
    AQA新加入手机自动化测试版块
    持续集成体系搭建服务
    开源自动化测试White与UIA
    TIB自动化测试快讯 自动化测试空间一周精选(201119)
    周六广州软件测试俱乐部圆桌会议3期
    Java白盒测试训练
    TIB自动化测试快讯 自动化测试空间一周精选(2012220)
    TIB自动化测试快讯 自动化测试空间一周精选(201226)
  • 原文地址:https://www.cnblogs.com/zhenjianyu/p/13221743.html
Copyright © 2011-2022 走看看