javascript数据结构与算法之栈与队列_基础知识

javascript数据结构与算法之栈与队列_基础知识

ID:30777252

大小:59.50 KB

页数:6页

时间:2019-01-03

javascript数据结构与算法之栈与队列_基础知识_第1页
javascript数据结构与算法之栈与队列_基础知识_第2页
javascript数据结构与算法之栈与队列_基础知识_第3页
javascript数据结构与算法之栈与队列_基础知识_第4页
javascript数据结构与算法之栈与队列_基础知识_第5页
资源描述:

《javascript数据结构与算法之栈与队列_基础知识》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、JavaScript数据结构与算法之栈与队歹[J学习起因曾经有一次在逛V2EX吋,碰到这么一个帖子。数学完全还给老师了,想学回一-些基础数学,大概是高中程度的,冇什么书籍推荐?发帖的楼主大淫没冇高数课程,出去工作时一直在从事前端的工作。感觉到数学知识的匮乏,所以想补一补数学。看了看帖子,感觉和我很像,因为我的专业是不开高数的,我学的也是前端。也同样感觉到了数学知识匮乏所带來的困顿。同时因为自己的数学思维实在是不怎么好,所以决定努力补习数学与计算机基础知识。当时也冇人说:”前端需要什么数据结构与算法”,但是对于这个事情我冇自己的看

2、法。我并不认为前端不需要算法之类的知识,在我看来前端具备坚实的计算机基础,对自身发展是极具有利的。我想做程序员。而不是一辈子的初级前端和码农。也算是给口己的勉励吧。毕竞基础决定上限,再加上口己对计算机真的很感兴趣,所以学起来就算很累,但也是很幸福的。于是去网上选购了《学习JavaScript数据结构与算法》这本书,配合着去图书馆借阅的《大话数据结构》,开始了数据结构与算法的初步学习。JavaScipt之数组操作接下来就是数据结构的第一部分,栈。栈是一种遵从后进先岀原则(L1F0,全称为LastInFirstOut)的有序集合。栈

3、顶永远是最新的元素。举个例子就是:栈就像放在箱子里的一叠书你耍拿下面的书先耍把上面的书拿开。(当然,你不能先拿下面的书。)JavaScipt中栈的实现首先,创建一个构造函数。*栈的构造函数*/functionStack()//用数组来模拟栈varitem二[];栈需要冇如下的方法:push(element(s)):添加几个元素到栈顶pop0:移除并返回栈顶元素peek():返回栈顶元素isAmpty:检查栈是否为空,为空则返回trueclear:移除栈中所有元素size:返回栈屮元素个数。print:以字符串显示栈中所有内容pu

4、sh方法的实现说明:需要往栈中添加新元索,元索位置在队列的末尾。也就是说,我们可以用数组的push方法來模拟实现。实现:/***将元索送入栈,放置于数组的最后一位*©param{Any}clement接受的元素,不限制类型*/this,push=function(element){items,push(element);};pop方法的实现说明:需要把栈顶元索弹岀,同时返回被弹出的值。可以用数组的pop方法来模拟实现。实现:/***弹岀栈顶元素*©return{Any}返冋被弹出的值*/this,pop二function(){r

5、cturnitems・pop();};peek方法的实现说明:查看栈顶元素,可以用数组长度来实现。实现:/***查看栈顶元素*@return{Any}返回栈顶元素*/this,peek二function(){returnitems[items.length-1];}其余方法的实现说明:前三个是栈方法的核心,其余方法则在此一次性列出。因为下文要讲的队列,会与这部分有很大重合。实现:/***确定栈是否为空*©return{Boolean}若栈为空则返冋true,不为空则返冋false*/this.isAmpty二function()

6、{returnitems・length===0};/***清空栈中所冇内容*/this.clear=function(){items=[];};/***返回栈的长度*©return{Number}栈的长度*/this,size二function(){returnitems・length;};/***以字符串显示栈中所有内容*/this.print=function(){console,log(items.toString());};实际应用栈的实际应用比较多,书屮冇个十进制转二进制的函数。(不懂二进制怎么算的话可以百度)下面是函

7、数的源代码。原理就是输入要转换的数字,不断的除以二并取整。并且最后运用while循环,将栈111所有数字拼接成字符串输出。/***将10进制数字转为2进制数字*©param{Number}decNumber要转换的10进制数字*@return{Number}转换后的2进制数字*/functiondividcBy2(decNumbcr){varremStack二newStack(),rem,binaryString二'';while(decNumber>0){rem二Math,floor(decNumber%2);remStack

8、.push(rem);decNumber=Math,floor(decNumber/2);}while(!remStack.isAmptyO){binaryString+=remStack.pop().LoString();}returnbinaryString

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。