编程基础(三)JS数据结构-栈

编程基础(三)JS数据结构 - 栈

栈是一种与列表类似的数据结构,只能在栈顶进行添加和删除元素,所以这样的数据结构操作起来非常快且容易实现。栈的特殊性在于它是一种“后入先出”的数据结构,例如摞盘子,只能从最上面取盘子,盘子洗干净之后也只能摞在最上面。任何不在栈顶的元素都无法访问。如果要访问下面的元素,就要删除它上面的所有元素。

简单介绍

储存数据的结构是数组,但也可以是其它数据结构。

top变量是为了记录栈顶元素的位置,同时要注意,与列表中的listSize属性相似,添加或删除元素必须同时改变top的值。

length属性记录栈内元素的个数

push方法是将一个元素压入栈中,先加入元素,再改变top值。

pop方法是返回栈顶元素同时也永久性删除,即使用pop方法之后再次访问栈顶元素,就不再是相同值了。先改变top值再返回栈顶元素。

peek方法只返回栈顶元素,不删除,使用peek方法之后再次访问栈顶元素,依旧返回相同值。不改变top值,返回栈顶元素。

clear方法用于清空栈内元素。

Constructor

应用

数制间的相互转换

针对基数为2-9的情况,可以把数字n转为进制表示。

步骤为:

最高为为n%b,将此位压入栈

使用n/b代替n

重复步骤1和2,知道n等于0,且没有余数。

持续将栈内元素弹出,直到栈为空,依次将这些元素排列,就得到转换后数字的字符串形式。

实操见下图:

回文

回文是指这样一种现象,一个单词、短语或数字,从前往后写和从后往前写都是一样的,比如单词"dad" 、"racecar"。如果忽略空格和标点符号,下面这个句子也是回文,"A man, a plan, a canal: Panama";数字1001也是回文。

下面实践如何使用栈判断一个字符串是否是回文:

递归演示

递归就是重复调用,求阶乘就是一个很好的例子。

想要了解更多内容,快来关注我呦~~

版权声明:本文为本人原创文章,未经允许不得转载

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180418G17OKJ00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券