位置:首页 > 软件操作教程 > 编程开发 > JavaScript > 问题详情

JavaScript 栈操作

提问人:刘团圆发布时间:2020-11-25

■知识点

    使用pushO和p0p()方法可以在数组尾部执行操作。其中pushO方法能够把一个或多个参数值附加到数组的尾部,并返回添加元素后的数组长度。pop()方法能够删除数组中最后一个元素,并返回被删除的元素。

    栈遵循先进后出、后进先出原则。类似的行为在生活中比较常见,如佥放物品,叠在上面的总是先使用,还有弹夹中的子弹,以及文本框中输入和删除字符操作等。

■实例设计

下面运用栈运算来设计一个进制转换的问题。定义一个函数,接收十进制数字,然后返回一个二进制的字符串表示。

【设计思路】

    把十进制数字转换为二进制值,实际上就是把数字与2进行取余,然后再使用相除结果与2继续取余。在运算过程中把每次的余数推入栈中,最后再出栈组合为字符串即可。

    例如,把10转换为二进制的过程为:10/2 = 5余0, 5/2 = 2余1,2/2=1余0,1小于2余1,进栈后为: 0101,出找后为:1010,即10转换为二进制的值为1010。 

【实现代码】

function d2b (num) {

    var a = [] , r, b = '';             //a为栈,r为余数,b为二进制字符串

    while (num>0) {                     //逐步求余

        r = Math.floor(num % 2);        //获取余数

        a.push (r);                     //把余数推入栈中

        num = Math.floor(num / 2);      //获取相除后整数部分值,准备下一步求余

    }

    while (a.length) {                  //依次出栈,然后拼接为字符串

    b += a.pop () .toString ();

    }

    return b;                           //返回二进制字符串

}

【应用代码】

console.log( d2b(59));                 //返回 111011

console.log( (59).toString(2)) ; //返回 111011

    十进制转二进制时,余数是0或1;同理十进制转八进制时,余数是0到7的整数;十进制转十六进制时,余数为0到9之间的数字加上A、B、C、D、E、F(对应10、11、12、13、14和15),因此,还需要对栈中的数字做转化。

继续查找其他问题的答案?

相关视频回答
回复(0)
返回顶部