宝哥软件园

JavaScript中的数据结构和算法(一):栈

编辑:宝哥软件园 来源:互联网 时间:2021-09-09

命令

数据结构和算法javascript是一个相对简单的解释。优点是常用的数据结构是用JavaScript语言描述的。书中很多例子来自一些常见的面试问题,可以算是与时俱进。业余阅读后,顺便记录下来。

Git代码下载:https://github.com/JsAaron/data_structure.git

堆栈结构

特殊列表,堆栈中的元素只能通过列表的一端(堆栈的顶部)访问

后进先出数据结构

Javascript提供了可操作的方法,推栈和弹出栈,但是弹出会从栈中移除数据

实现堆栈的实现类

底层存储数据结构采用数组

因为pop会删除堆栈中的数据,所以有必要实现查找方法peek

实现一个清理方法,清除

要查找长度的堆栈元素总数

要找出是否还有一个元素是空的,请复制如下代码: Function stack () {this。datastore=[] this。top=0;this . push=push this . pop=pop this . peek=peek this . length=length;}

函数push(element){ this . datastore[this . top]=element;}

函数peek(element){ return this . datastore[this . top-1];}

函数pop(){ return this . datastore[-this . top];}

函数clear(){ this.top=0}

函数长度(){ return this.top}

回族语言

回文是指一个词、一个数组、一个短语,从前面到后面都是一样的。

回文最简单的想法是,如果倒排的元素等于原元素,就说明是回文

这里可以使用这个栈类进行操作,复制代码如下:函数是回文(word){ var s=newstack()for(var I=0;I .字长;I){ s . push(word[I])} var rword=' ';while(s . length)(0){ rword=s . pop();} if(word==rword){ return true;} else { return false}}

ispalindome(' aarra ')//false ispalindome(' aaraa ')//true

看看这个isPalindrome函数,其实就是通过调用Stack类,然后针对每个分解的组件单元,将传递的word元素推入栈中,根据栈的原理,后进先出的原理,用pop的方法来拆解这个元素,最后和组装好的进行比较。如果相等,就是回文。

递归

用递归实现阶乘算法

5!=5 * 4 * 3 * 2 * 1=120

使用递归复制代码如下:函数阶乘(n){ if(n===0){ return 1;} else {返回n *阶乘(n-1);}}

堆叠操作

复制代码如下:函数fact(n){ var s=newstack()while(n ^ 1){//[5,4,3,2]s . push(n-);} var乘积=1;while(s . length)(0){ product *=s . pop();}退回产品;}

事实(5) //120

边推边把n=5推入栈中,然后取出前面的一个,通过循环或按照栈的后进先出原则,用pop方法叠加乘积

更多资讯
游戏推荐
更多+