web前端

javascript数据结构与算法——栈

栈是一种遵从后进先出(LIFO)原则的有序集合。新添加的或待删除的元素都保存在栈的末尾,称作栈顶,另一端就叫栈底。在栈里,新元素都靠近栈顶,旧元素都接近栈底。

在现实生活中也能发现很多栈的例子。例如,下图里的一摞书或者餐厅里堆放的盘子。

栈也被用在编程语言的编译器和内存中保存变量、方法调用等。

创建栈:

我们将创建一个类来表示栈。让我们从基础开始,先声明这个类:

首先,我们需要一种数据结构来保存栈里的元素。可以选择数组:

接下来,要为我们的栈声明一些方法。

栈的全部代码

我们已经学会了如何使用Stack类,现在就用它解决一些计算机科学中的问题。

现实生活中,我们主要使用十进制。但在计算科学中,二进制非常重要,因为计算机里的所有内容都是用二进制数字表示的(0和1)。没有十进制和二进制相互转化的能力,与计算机交流就很困难。

大学的计算机课一般都会先教这个进制转换。下面是对应的算法描述:

在这段代码里,当结果满足和2做整除的条件时(行{1}),我们会获得当前结果和2的余数,放到栈里(行{2}、 {3})。然后让结果和2做整除(行{4})。另外请注意: JavaScript有数字类型,但是它不会区分究竟是整数还是浮点数。因此,要使用Math.floor函数让除法的操作仅返回整数部分。最后,用pop方法把栈中的元素都移除,把出栈的元素变成连接成字符串(行{5})。

用刚才写的算法做一些测试,使用以下代码把结果输出到控制台里:

(1)
Loading收藏(45)

热评文章

发表评论

*

评论: 2 条评论,访客:2 条,博主:0 条

  • 九歌
    九歌 发布于:  回复

    不觉明厉

  • zuimeiaj
    zuimeiaj 发布于:  回复

    很好