用js写出数据结构中的自定义栈,利用栈的思想,使用js将十进制数转换成任意进制数(2,8,16进制)

栈的核心就是先进后出

用js写出数据结构中的自定义栈 

使用原型来封装方法

        class Stack{
            constructor(){
                this.items=[]// 栈中的属性
            }
    // 栈相关的方法
    // 压栈操作
            push(item){
               this.items.push(item)
            }
    // 出栈操作
            pop(){  
               this.items.pop()
            }
            peek(){  //查看栈顶元素
                
               return this.items[this.items.length-1]
            }
     // 判断栈中的元素是否为空
            isEmpty(){
                return this.item=(this.items.length==0)
            }
	 // 获取栈中元素的个数
            size(){
			        return this.items.length
			    }

        }
        var stack=new Stack()
        stack.push(66)
        stack.push(77)
        stack.push(88)
        console.log(stack.items,11)
        stack.pop()
        console.log(stack.items,22)
        console.log(stack.peek()) 
		console.log(stack.isEmpty())
        console.log(stack.size())

打印结果为:

利用栈的思想,使用js将十进制数转换成任意进制数(2,8,16进制)

以下代码引用了上边创建的class类函数Stack

			function fn(chushu, base) {  //设置形参
				var stack = new Stack()
				var arr = ["A", "B", "C", "D", "E", "F"] //十六进制
				while (chushu > 0) { //除数必须大于0
					var yushu = chushu % base  
					var chushu = Math.floor(chushu / base)
					if (yushu > 9) {
						yushu = arr[yushu - 10] //十六进制的余数
					}
					stack.push(yushu) //将余数依次压栈,放进数组中

				}
				var str = "" 
				while (!stack.isEmpty()) { //判断数组不为空时执行
					str = str + stack.pop() //余数的数组依次出战,后进先出
				}
				return str
			}

			console.log(fn(100, 2))
			console.log(fn(15, 8))
			console.log(fn(20, 8))
			console.log(fn(100, 16))
			console.log(fn(200, 16))

结果为

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值