JavaScript堆栈和示例代码的详细说明
JavaScript堆栈
堆栈是遵循后进先出原则的有序集合。
新添加或删除的元素保存在堆栈的末尾,称为堆栈的顶部,另一端称为堆栈的底部。
在堆栈中,新元素靠近顶部,旧元素靠近底部
昨天因为有些东西没有更新,今天我打算给大家讲讲JavaScript实现的数据结构
数据结构和算法是编程语言的灵魂,是解决所有编程问题的基础
以前学C/C的时候,感官算法还是很重要的,但是前端涉及的不多
无论如何,作为技术人员,有必要了解一些基本的数据结构和算法
我们更容易用JavaScript实现数据结构和算法
让我们先来看一个最基本的
对栈的理解
栈的数据结构其实很容易理解
把它想象成一个只有一本书大小的小盒子
推/推就是把一本书放在盒子里,但只能放在盒子的顶部
打叠就是从盒子里拿出一本书
书堆的顶部是盒子里最上面的一本书
在书堆的底部是盒子里较低的一本书
生活中有很多叠的例子,比如叠盘子,用子弹推子弹等等
这可以帮助我们更好地理解堆栈
堆栈也用于我们编程语言的编译器和内存中,以存储变量、方法调用等
堆栈的创建
现在让我们用JavaScript实现一个堆栈
首先,我们需要考虑一个数据结构来保存堆栈元素,毫无疑问数组是正确的选择
然后以装书为例,实现栈的功能
将元素添加到堆栈顶部(将一本书扔进盒子中)移除顶部元素(从盒子中取出一本书)检查顶部元素(查看盒子中顶部的书是什么)并确定堆栈是否为空(查看盒子中是否有书)移除堆栈中的所有元素(倒出盒子中的所有书)并检查堆栈中的元素数量(查看盒子中有多少本书)
毫无疑问,如果箱子里的书很多,我们就不能直接把箱子里低的书拿出来,所以不能直接操作栈底
也许我们有很多这样的盒子和堆栈,所以我们最好将其声明为“类”。完整的代码如下
函数Stack(){ var items=[];this . push=function(ele){ items . push(ele);};//push this . pop=function(){ return items . pop();};//stack this . peek=function(){ return items[items . length-1];};//检查堆栈顶部元素this。isempty=function () {return items。长度===0;};//判断堆栈是否为空。这个。size=function () {return items。长度;};//堆栈大小this . clear=function(){ items=[];};//清空堆栈this . print=function(){ console . log(items . tostring());};//打印堆栈} var Stack=new Stack();//声明栈的实例栈的应用
让我们用stack解决一些问题
例如,将十进制转换为二进制
要将十进制数转换为二进制数,可以将这个数除以2,直到它为0
例如,将50转换为二进制是10010
以下是算法实现
该函数将二进制(decnum){//十进制转换为二进制var rem stack=newstack(),rem,binary str=while(decNum){ rem=math . floor(decNum % 2);decNum=math . floor(decNum/2);remstack . push(rem);//将剩余部分放在堆栈上,{ while!remstack . isempty()){ binary str=remstack . pop();//逐个弹出堆栈中的元素,将剩余的拼接成字符串}返回binaryStr} console . log(convert binary(50));//Output 10010也可以修改这个算法,这样这个函数就可以把十进制转换成任意十进制
函数基转换器(decnum,base){//将十进制转换为任意十进制var base=(base=2 base=16)?base : 10,remStack=new Stack(),rem,baseStr=' ',位数=' 0123456789ABCDEFwhile(decNum){ rem=math . floor(decNum % base);decNum=math . floor(decNum/base);remstack . push(rem);//将剩余部分放在堆栈上,{ while!remstack . isempty()){ baseStr=digits[remstack . pop()];//逐个弹出堆栈中的元素,将剩余的拼接成字符串} return baseStr}其实也可以用数组来实现。为了实现堆栈,我们使用堆栈来实现该算法
我们可以通过这个小应用程序简单地理解堆栈
感谢您的阅读,希望对大家有所帮助,感谢您对本网站的支持!
版权声明:JavaScript堆栈和示例代码的详细说明是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。