本文实例讲述了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的数据结构队列动画实现示例解析
# 第一个
# 多个
# 下一
# 是一种
# 完成后
# 随机数
# 相关内容
# 线性表
# 遍历
# 而在
# 感兴趣
# 第二个
# 给大家
# 去做
# 使其
# 时间为
# 因为它
# 为例
# 要将
相关文章:
SQL查询语句优化的实用方法总结
免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?
免费制作海报的网站,哪位做平面的朋友告诉我用什么软件做海报比较好?ps还是cd还是ai这几个软件我都会些我是做网页的?
关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)
,怎么在广州志愿者网站注册?
平台云上自助建站如何快速打造专业网站?
手机怎么制作网站教程步骤,手机怎么做自己的网页链接?
建站IDE高效指南:快速搭建+SEO优化+自适应模板全解析
如何选择网络建站服务器?高效建站必看指南
建站VPS选购需注意哪些关键参数?
如何在沈阳梯子盘古建站优化SEO排名与功能模块?
如何快速搭建FTP站点实现文件共享?
如何挑选高效建站主机与优质域名?
C++如何使用std::optional?(处理可选值)
全景视频制作网站有哪些,全景图怎么做成网页?
企业微网站怎么做,公司网站和公众号有什么区别?
如何快速打造个性化非模板自助建站?
安云自助建站系统如何快速提升SEO排名?
巅云智能建站系统:可视化拖拽+多端适配+免费模板一键生成
营销式网站制作方案,销售哪个网站招聘效果最好?
ui设计制作网站有哪些,手机UI设计网址吗?
上海制作企业网站有哪些,上海有哪些网站可以让企业免费发布招聘信息?
如何快速生成可下载的建站源码工具?
制作网站的模板软件,网站怎么建设?
济南专业网站制作公司,济南信息工程学校怎么样?
建站之星代理商如何保障技术支持与售后服务?
PHP正则匹配日期和时间(时间戳转换)的实例代码
公司网站制作价格怎么算,公司办个官网需要多少钱?
定制建站流程步骤详解:一站式方案设计与开发指南
网站制作网站,深圳做网站哪家比较好?
如何选择高效稳定的ISP建站解决方案?
如何在Golang中使用replace替换模块_指定本地或远程路径
网站建设制作需要多少钱费用,自己做一个网站要多少钱,模板一般多少钱?
高防服务器租用指南:配置选择与快速部署攻略
代刷网站制作软件,别人代刷火车票靠谱吗?
深圳防火门网站制作公司,深圳中天明防火门怎么编码?
浙江网站制作公司有哪些,浙江栢塑信息技术有限公司定制网站做的怎么样?
攀枝花网站建设,攀枝花营业执照网上怎么年审?
网站专业制作公司,网站编辑是做什么的?好做吗?工作前景如何?
如何在腾讯云免费申请建站?
建站主机助手选型指南:2025年热门推荐与高效部署技巧
如何在IIS中新建站点并解决端口绑定冲突?
如何做网站制作流程,*游戏网站怎么搭建?
Avalonia如何实现跨窗口通信 Avalonia窗口间数据传递
如何在橙子建站中快速调整背景颜色?
杭州银行网站设计制作流程,杭州银行怎么开通认证方式?
大连 网站制作,大连天途有线官网?
广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?
独立制作一个网站多少钱,建立网站需要花多少钱?
制作旅游网站html,怎样注册旅游网站?
*请认真填写需求信息,我们会在24小时内与您取得联系。