欢迎来到天天文库
浏览记录
ID:30777622
大小:104.28 KB
页数:8页
时间:2019-01-03
《javascript数组实现数据结构中的队列与堆栈_javascript技巧》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、JavaScript数组实现数据结构中的队歹(J与堆栈一、队列和堆栈的简单介绍1・1、队列的基本概念队列:是一种支持先进先出(FIFO)的集合,即先被插入的数据,先被取出!如下图所示:举一31a?an亠_队头队尾队列1.2、堆栈的基本概念堆栈:是一种支持后进先出(LIFO)的集合,即后被插入的数据,先被取出!如下图所示:入栈二、在JavaScript中实现队列和堆栈在JavaScript中实现队列和数组主要是通过数组,js数组中提供了以下儿个方法可以讣我们很方便实现队列和堆栈:•shift:从数组中把第一个元索删除,并返回这个元索的值。•unshift:在数组的开头
2、添加一个或更多元索,并返回新的长度•push:在数组的小末尾添加兀素,并返回新的长度•pop:从数组中把最后一个元素删除,并返回这个元素的值。2.1、实现队列〃创建一个数组来模拟队列var3二newArray();console.log(a);//unshift:在数组的开头添加一个或更多元索,并返回新的长度console.log(z,入队〃);&imshift()console,log(a);//>a.unshift();console,log(a);//>,a.unshift();consolc.log
3、(a);//>,,&unshift();console.log(a);//>,,,console.1og(“出队,先进先出〃);console・log(a);//pop:从数组小把最后一个元素删除,并返回这个元素的值3・pop();//>console.log(a);a.pop();//>console・log(a);&pop();//>console,log(a);a.pop0;//>console・1og(a);入队[1][2,1]E2,1]【43,2,1]出臥>先进先岀他3,2,1]33,2]心3]⑷2.2、实现堆栈4、text/javascript"〉〃创建一个数组來模拟堆栈vara=newArray();console,log(a);//push:在数组的末尾添加一个或更多元素,并返回新的长度console,log(〃入栈〃);3.push()console.log(a);//>a.push();console,log(a);//>,a.push();consolc.log(3);//>,,a.push();console,log(a);//>,,,console.logCtB栈,后进先出〃);console,log(a);//pop:从数组中把最后一个元素删除,并返回这个元素5、的值a.pop();//>console,log(a);a.popO;//>console,log(a);a.pop0;//>console.log(a);a.pop();//>console,log(a);[]入栈flja2ja2,3]m2.3,4]出栈,后进先出m乙九4]m2.3][1.2][1][J2.3、push方法和unshift方法的性能测试Array的push与unshift方法都能给当前数组添加元素,不同的是,push是在末尾添加,而unshift则是在开头添加,从原理就口J以知道,unshift的效率是较低的。原因是,它每添加一个6、元素,都耍把现有元素往下移一个位置。但到底效率差异冇多大呢?下而来简单测试一下。/*关于代码中"vars=+ncwDatc();〃的技巧说明解释如下:二+这个运算符是不存在的;+相当于.valueOf();+newDate()相当于newDate().valueOf()//个结果一样返回当前时间的毫秒数alert(+newDatcO);alert(+newDate);vars=newDate();alert(s.valueOf());alert(s.getTime());*/vararr=[];varst7、artTime=+newDate();//+newDate()相当于newDate().valueOf(),返回当前吋间的毫秒数//push性能测试for(vari=;i<;i++){arr・push(i);}varendTime二+newDate();console.log(,z调用push方法往数组中添加个元索耗时z,+(cndTimc-startTimc)+z,毫秒〃);startTime=+newDate();arr=[];//unshift性能测试for(vari=;i<;i++){arr.unshift(i);1jcndTimc=+ncvDate(
4、text/javascript"〉〃创建一个数组來模拟堆栈vara=newArray();console,log(a);//push:在数组的末尾添加一个或更多元素,并返回新的长度console,log(〃入栈〃);3.push()console.log(a);//>a.push();console,log(a);//>,a.push();consolc.log(3);//>,,a.push();console,log(a);//>,,,console.logCtB栈,后进先出〃);console,log(a);//pop:从数组中把最后一个元素删除,并返回这个元素
5、的值a.pop();//>console,log(a);a.popO;//>console,log(a);a.pop0;//>console.log(a);a.pop();//>console,log(a);[]入栈flja2ja2,3]m2.3,4]出栈,后进先出m乙九4]m2.3][1.2][1][J2.3、push方法和unshift方法的性能测试Array的push与unshift方法都能给当前数组添加元素,不同的是,push是在末尾添加,而unshift则是在开头添加,从原理就口J以知道,unshift的效率是较低的。原因是,它每添加一个
6、元素,都耍把现有元素往下移一个位置。但到底效率差异冇多大呢?下而来简单测试一下。/*关于代码中"vars=+ncwDatc();〃的技巧说明解释如下:二+这个运算符是不存在的;+相当于.valueOf();+newDate()相当于newDate().valueOf()//个结果一样返回当前时间的毫秒数alert(+newDatcO);alert(+newDate);vars=newDate();alert(s.valueOf());alert(s.getTime());*/vararr=[];varst
7、artTime=+newDate();//+newDate()相当于newDate().valueOf(),返回当前吋间的毫秒数//push性能测试for(vari=;i<;i++){arr・push(i);}varendTime二+newDate();console.log(,z调用push方法往数组中添加个元索耗时z,+(cndTimc-startTimc)+z,毫秒〃);startTime=+newDate();arr=[];//unshift性能测试for(vari=;i<;i++){arr.unshift(i);1jcndTimc=+ncvDate(
此文档下载收益归作者所有