封装一个Stack 并实现10进制转2进制

//封装一个栈
        function Stack(){
            //栈里的属性
            this.items = [];
        }
        //栈的相关操作
        //1.新元素入栈
        Stack.prototype.push = function(ele){
            this.items.push(ele);
        }
        //2.从栈顶取出元素
        Stack.prototype.pop = function(){
            return this.items.pop();
        }

        //3.查看栈顶元素
        Stack.prototype.peek = function(){
            return this.items[this.items.length-1];
        }

        //4.栈是否为空
        Stack.prototype.isEmpty = function(){
            return this.items.length == 0;
        }

        //5.获取栈里元素的个数
        Stack.prototype.size = function(){
            return this.items.length;
        }

        //6.toString方法
        Stack.prototype.toString = function(){
            var result = '';
            for(var i=0;i<this.items.length;i++){
                result+=this.items[i] +' ';
            }
            return result;
        }

        // var s = new Stack();
        // s.push(20);
        // s.push(2);
        // s.push(45);
        // s.push(12);
        // s.push(9);

        // console.log(s);

        // console.log(s.pop());
        // console.log(s.pop());
        // console.log(s.pop());

        // console.log(s.peek());

        // console.log(s.isEmpty());
        // console.log(s.size());
        // console.log(s.toString());
    
        //将十进制转化为二进制
        function decimal2Binary(decNum){
            //1定义栈对象
            var stack = new Stack()

            //2.循环操作
            while(decNum>0){
                //获取余数,放入栈中
                stack.push(decNum % 2);
                //获取整除的结果作为下一次运算的数字
                decNum = Math.floor(decNum/2);
            }

            //3.从栈中取出结果转化为字符串
            var binaryStr = '';
            while(!stack.isEmpty()){
                binaryStr +=stack.pop();
            }

            return binaryStr;
        }

        console.log(decimal2Binary(100));
        console.log(decimal2Binary(999));
        console.log(decimal2Binary(924));
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值