zoukankan      html  css  js  c++  java
  • 跟我一起创建栈

    创建栈的方法如下

    function Stack(){
        var items = []
        // push添加元素到栈顶
        this.push = function(element){
            items.push(element)
        }
        // 移除栈中的元素
        this.pop = function(){
            return items.pop()
        }
        // 返回栈顶元素
        this.peek = function(){
            return items[items.length-1]
        }
        // 栈为空
        this.isEmpty = function(){
            return items.length == 0
        }
        // 栈的长度
        this.size = function(){
            return items.length
        }
        // 移除栈里所有元素
        this.clear = function(){
            items = []
        }
        // 将栈中的元素输出到控制台
        this.print = function(){
            console.log(items.toString)
        }
    }
    var Stack = new Stack()
    Stack.push(5)
    console.log(Stack.peek())
    console.log(Stack.size())
    Stack.pop()
    console.log(Stack.size())
    console.log(Stack.isEmpty())
    

    利用栈的原理实现十进制转二进制的函数方法

    // 十进制转二进制
    function divideBy2(decNumber){
        var remStack = new Stack(),
        rem,//余数
        binaryString = '';//二进制数
        while(decNumber>0){
            rem = Math.floor(decNumber%2);//余数
            remStack.push(rem);//比如011
            decNumber = Math.floor(decNumber/2);//取整数
        }
        while(!remStack.isEmpty()){
            binaryString += remStack.pop().toString();////输出110 先进后出
        }
        return binaryString;
    }
    

    由十进制转二进制的方法,推广为十进制转任意进制

    // 十进制转成任意进制
    function baseConverter(decNumber,base){
        var remStack = new Stack(),
        rem,
        baseString = '',
        digits = '0123456789ABCDEF';
        while(decNumber>0){
            rem = Math.floor(decNumber%base);
            remStack.push(rem);
            decNumber = Math.floor(decNumber/base);
        }
        while(!remStack.isEmpty()){
            baseString+=digits[remStack.pop()]
        }
        return baseString;
    }
    

    例子来自《学习javascript数据结构与算法》
    这本书我2年前深入学习过,觉得这本书非常好,现在有时间想多多看看我以前看过的书籍。

  • 相关阅读:
    python文件读取
    python字符串的使用
    需求验证实现
    面向对象思想——面向对象设计原则
    java面试问题整理-垃圾回收
    Java集合类学习-LinkedList, ArrayList, Stack, Queue, Vector
    Java集合类源码学习- Iterabel<T>,Colection<E>,AbstractCollection<E>
    EMF学习,为了实现可扩展可自定义的模型验证
    EMF学习,为了实现可扩展可自定义的模型验证
    Google 云计算中的 GFS 体系结构
  • 原文地址:https://www.cnblogs.com/smart-girl/p/11343513.html
Copyright © 2011-2022 走看看