本文实例讲述了JavaScript队列的应用。分享给大家供大家参考,具体如下:

和前面介绍的栈相反,队列是一种先进先出的线性表,它只允许在表的一端进行插入,而在另一端进行删除。JavaScript自己提供了两个队列方法shift和push方法,分别是出队和入队,其原理就是将元素插入数组最后一个和删除第一个元素。
这里需要注意一点,就是unshift方法的效率比push的效率要低很多。因为它要将入队之前的数组全部往前移动一位。这里我们就不用代码再次演示了。
和线性表类似,队列也分为顺序队列和链队列。
和顺序栈类似,在队列的顺序存储结构中,除了使用一组地址连续的存储单元依次存放从队列头到队列尾的元素之外,还要设置两个指针front和rear分别指向队列头元素和队列尾元素。初始化时,front=rear=0;插入元素时,rear+1;删除元素时,front+1。所以在非空队列中,头指针始终指向队列头元素,而尾指针始终指向队列尾元素的下一个位置。
队列的应用有哪些呢?
我们先看看计算机组成层面的吧,首先就是CPU资源的竞争问题。在具有多个终端的计算机系统中,有多个用户需要使用CPU来各自运行程序,操作系统会按照每个请求在时间上的顺序,加请求排成一个队列。每次把CPU分配给队头的任务,完成后使其出队,然后依次。
第二个例子就是主机与外部设备之间速度不匹配的问题。我们以打印机和主机为例。主机输出数据给打印机打印,主机输出数据的速度远大于打印机打印速度,所以有一个打印数据缓冲区,主要把数据依次写入缓冲区,写满后主机就暂停输出,继而去做其他时间,只到打印机完成打印,再次请求主机发送数据,主机才继续输出数据。这样利用队列可以提高主机的效率。
我在这里挑一个常见的软件层面的例子,也就是银行排队问题。先说说实现思路,第一个客户到达的时刻为0,之后每个客户到达的时刻在前一个客户到达时设定随机值,因此在客户到达时需要产生两个随机数,一个是客户办理业务耗时durtime,一个是下一客户到达时间间隔intertime,假设当前时间为occurtime,则下一客户到达时为occurtime+intertime。
刚到达的客户应该插入到当前含元素最少的队列中。
在JavaScript的运用中,通常使用队列来进行任务的排序。而任务队列的任务是按进入队列的顺序延迟执行(解决状态一致性)的,即当前一个任务完成后,后面的任务才被执行,如果当前没有任务,则入队列的任务立即执行。代码如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>队列</title>
</head>
<body>
<script type="text/javascript">
function taskQueue() {
taskList = [];
var isRun = false;
this.addTask = function (task) {
taskList.push(task);
};
setInterval(function () {
if (taskList.length > 0 && !isRun) {
isRun = true;
taskList.shift();
isRun = false;
}
}, 100);
}
function show(){
alert(taskList);
}
taskQueue();
addTask(1);
addTask(2);
addTask(3);
setTimeout('show()',99);//1,2,3
setTimeout('show()',101);//2,3
setTimeout('show()',400);//null
</script>
</body>
</html>
更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《JavaScript数据结构与算法技巧总结》、《JavaScript数学运算用法总结》、《JavaScript排序算法总结》、《JavaScript遍历算法与技巧总结》、《JavaScript查找算法技巧总结》及《JavaScript错误与调试技巧总结》
希望本文所述对大家JavaScript程序设计有所帮助。
# JavaScript
# 队列
# 数据结构
# JS中的算法与数据结构之队列(Queue)实例详解
# JavaScript数据结构与算法之队列原理与用法实例详解
# JavaScript数据结构之优先队列与循环队列实例详解
# JavaScript数据结构学习之数组、栈与队列
# JavaScript数组实现数据结构中的队列与堆栈
# JavaScript数据结构与算法之栈与队列
# JavaScript中数据结构与算法(二):队列
# 基于JavaScript的数据结构队列动画实现示例解析
# 第一个
# 多个
# 下一
# 是一种
# 完成后
# 随机数
# 相关内容
# 线性表
# 遍历
# 而在
# 感兴趣
# 第二个
# 给大家
# 去做
# 使其
# 时间为
# 因为它
# 为例
# 要将
相关文章:
5种Android数据存储方式汇总
建站中国必看指南:CMS建站系统+手机网站搭建核心技巧解析
宠物网站制作html代码,有没有专门介绍宠物如何养的网站啊?
*服务器网站为何频现安全漏洞?
建站之星后台密码遗忘或太弱?如何重置与强化?
如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?
,柠檬视频怎样兑换vip?
宝华建站服务条款解析:五站合一功能与SEO优化设置指南
深圳网站制作费用多少钱,读秀,深圳文献港这样的网站很多只提供网上试读,但有些人只要提供试读的文章就能全篇下载,这个是怎么弄的?
建站之星体验版:智能建站系统+响应式设计,多端适配快速建站
成都网站制作报价公司,成都工业用气开户费用?
如何在景安服务器上快速搭建个人网站?
义乌企业网站制作公司,请问义乌比较好的批发小商品的网站是什么?
已有域名和空间如何搭建网站?
如何基于PHP生成高效IDC网络公司建站源码?
在线制作视频的网站有哪些,电脑如何制作视频短片?
如何通过主机屋免费建站教程十分钟搭建网站?
已有域名和空间,如何快速搭建网站?
小型网站制作HTML,*游戏网站怎么搭建?
娃派WAP自助建站:免费模板+移动优化,快速打造专业网站
合肥做个网站多少钱,合肥本地有没有比较靠谱的交友平台?
广州美橙建站如何快速搭建多端合一网站?
建站之星如何助力企业快速打造五合一网站?
,交易猫的商品怎么发布到网站上去?
SQL查询语句优化的实用方法总结
台州网站建设制作公司,浙江手机无犯罪记录证明怎么开?
杭州银行网站设计制作流程,杭州银行怎么开通认证方式?
ui设计制作网站有哪些,手机UI设计网址吗?
学校建站服务器如何选型才能满足性能需求?
建站之星如何快速解决建站难题?
建站之星如何防范黑客攻击与数据泄露?
简单实现Android文件上传
如何选择网络建站服务器?高效建站必看指南
攀枝花网站建设,攀枝花营业执照网上怎么年审?
上海网站制作网页,上海本地的生活网站有哪些?最好包括生活的各个方面的?
如何在万网自助建站平台快速创建网站?
如何通过商城自助建站源码实现零基础高效建站?
红河网站制作公司,红河事业单位身份证如何上传?
建站之星如何保障用户数据免受黑客入侵?
建站主机如何安装配置?新手必看操作指南
建站主机选择指南:服务器配置与SEO优化实战技巧
详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)
如何用AWS免费套餐快速搭建高效网站?
无锡营销型网站制作公司,无锡网选车牌流程?
智能起名网站制作软件有哪些,制作logo的软件?
C#如何使用XPathNavigator高效查询XML
微信小程序制作网站有哪些,微信小程序需要做网站吗?
单页制作网站有哪些,朋友给我发了一个单页网站,我应该怎么修改才能把他变成自己的呢,请求高手指点迷津?
重庆网站制作公司哪家好,重庆中考招生办官方网站?
制作网站的过程怎么写,用凡科建站如何制作自己的网站?
*请认真填写需求信息,我们会在24小时内与您取得联系。