编程基础(三)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也是回文。
下面实践如何使用栈判断一个字符串是否是回文:
递归演示
递归就是重复调用,求阶乘就是一个很好的例子。
想要了解更多内容,快来关注我呦~~
版权声明:本文为本人原创文章,未经允许不得转载
领取专属 10元无门槛券
私享最新 技术干货