zoukankan      html  css  js  c++  java
  • 数据结构之栈-JavaScript实现栈的功能

    记录自己的学习

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

    function Stack(){
        this.data = [];
        this.push = push;        //添一个或多个元素到栈顶
        this.pop = pop;          //移除栈顶的元素,同时返回被移除的元素
        this.peek = peek;        //返回被移除的元素
        this.isEmpty = isEmpty;  //判断栈是否为空,空返回true,否则返回false
        this.clear =clear;       //移除栈里的所有元素
        this.size = size;        //返回栈内元素的个数
    };
    function push(ele){
        this.data.push(ele);
    };
    function pop(){
        return this.data.pop();  //利用数组的pop()方法来达到移除栈顶的元素,同时返回被移除的元素
    };
    function peek(){
        return this.data[this.data.length-1]
    };
    function isEmpty(){
        return this.data.length == 0;
    };
    function size(){
        return this.data.length;
    };
    function clear(){
        this.data = [];
    };
    
    var sta = new Stack();
    sta.push('lily');
    sta.push('Tom')
    console.log(sta.data)  //['lily', 'Tom']
    var peeka = sta.peek();
    console.log(peeka)     //Tom
    var popa = sta.pop();
    console.log(popa)      //Tom
    console.log(sta.data)  //lily

     运用上面实现的stack,实现进制转化

    //进制转换  10进制转化2进制,8进制,16进制
    function baseConverter(number, base){
        var remStack = new Stack(),
            rem,
            baseString = '',
            digits = '0123456789ABCDEF';
        while(number > 0){
            rem = number % base;
            remStack.push(rem);
            number = parseInt(number / base)
        }
        while(!remStack.isEmpty()){
            baseString += digits[remStack.pop()];
        }
        return baseString;
    }
    
    var a = baseConverter(15, 16)
    console.log(a)  //F
  • 相关阅读:
    设计模式——简单工厂模式
    异常信息ASM ClassReader failed to parse class file的问题解决
    freemarker学习笔记
    java实现邮箱验证的功能
    Quartz学习——Quartz简单入门Demo(二)
    Quartz大致介绍(一)
    深入理解Java线程池:ScheduledThreadPoolExecutor
    抢火车票引发的思考
    CGLib动态代理引起的空指针异常
    从原理上搞定编码(四)-- Base64编码
  • 原文地址:https://www.cnblogs.com/guojikun/p/6197553.html
Copyright © 2011-2022 走看看