• 使用 JavaScript 实现栈


    1.栈的基本操作

        function Stack() {
            //使用数组保存栈元素
            var items = [];
    
            //添加新元素到栈顶(相当于数组的末尾)
            this.push = function(element) {
                items.push(element);
            };
    
            //移除栈顶的元素,同时返回被移除的元素
            this.pop = function() {
                return items.pop();
            };
    
            //返回栈顶的元素,不对栈做任何修改
            this.peek = function() {
                return items[items.length - 1];
            };
    
            //如果栈里没有任何元素就返回true,否则返回false
            this.isEmpty = function() {
                return items.length == 0;
            };
    
            //移除栈里的所有元素
            this.clear = function() {
                items = [];
            };
    
            //返回栈里的元素个数,和数组的length很像
            this.size = function() {
                return items.length;
            };
    
            //返回栈里的内容
            this.print = function() {
                //return items.toString();
                return items;
            };
        }

    使用该方法:

        var stack = new Stack();
        console.log(stack.isEmpty());    //true
    
        stack.push(1);
        stack.push(3);
        stack.push(5);
        stack.push(7);
        console.log(stack.peek());       //7
        console.log(stack.print());      //[1, 3, 5, 7]
        console.log(stack.isEmpty());    //false
        console.log(stack.size());       //4
    
        console.log(stack.pop());        //7
        console.log(stack.peek());       //5
        console.log(stack.print());      // [1, 3, 5]

    2.基于该方法实现十进制数转换为二进制数

        //十进制转换为二进制
        function divideBy2(decNumber) {
            var remStack = new Stack(),
                rem,
                binaryString = '';
    
            while (decNumber > 0) {
                rem = Math.floor(decNumber % 2);
                remStack.push(rem);
                decNumber = Math.floor(decNumber / 2);
            }
    
            while (!remStack.isEmpty()) {
                binaryString += remStack.pop().toString();
            }
    
            return binaryString;
        }
    
        var decNumber = 10;
        console.log(decNumber + '转换为二进制数为:' + divideBy2(decNumber));       //10转换为二进制数为:1010

    3.基于该方法实现十进制数转换为二/八/十六进制数

        //十进制转换为任意进制
        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;
        }
    
        var decNumber = 552;
        var base = 16;
        console.log(decNumber + '转换为' + base + '进制数为:' + baseConverter(decNumber, base));       //552转换为16进制数为:228
  • 相关阅读:
    解决Maven项目pom.xml文件报xxx argetclassesMETA-INFMANIFEST.MF (系统找不到指定的路径。)问题
    MYSQL安装时解决要输入current root password的解决方法
    [多图]Windows 10 Build 10565今推送:优化界面菜单 Cortana改进
    Windows Server 2016 预览版下载
    编程书籍推荐——按角色划分
    编程书籍推荐——按内容划分
    无线路由器一、二、三根天线有什么区别?
    thinkphp5 下 的Nginx 伪静态
    linux 下执行python.py 无效解决方案
    Python Qt5 Creator 使用创建项目教程
  • 原文地址:https://www.cnblogs.com/dee0912/p/4959920.html
Copyright © 2020-2023  润新知