队列--数据结构与算法JavaScript描述(5)
队列 Queue
概念
队列是一种列表,但队列只能在队尾插入元,在队首删除元素。
队列是一种先进先出的数据结构,用于存储按顺序排列的数据,被用在很多地方,比如提交操作系统执行的一系列进程、打印任务池等,一些仿真系统用队列来模拟银行或杂货店里排队的顾客。
可以将队列想像成在银行前排队的人群,排在最前面的人第一个办理业务,新来的人只能在后面排队,直到轮到他们为止。
对队列的操作
- 向队列中插入新元素(入队):push( )
- 删除队列中的元素(出队):pop( )
- 读取队头的元素: peek( )
用数组实现队列
function Queue() {
this.dataStore = [];
this.enqueue = function(element){
this.dataStore.push(element);
}
this.dequeue = function(){
return this.dataStore.shift();
}
this.front = function(){
return this.dataStore[0];
}
this.back = function(){
return this.dataStore[this.dataStore.length - 1];
}
this.empty = function(){
return this.dataStore.length === 0 ? true : false;
}
this.toString = function() {
var str = '';
for(var i = 0; i < this.dataStore.length; i ++){
str += this.dataStore[i] + '\n';
}
return str;
}
使用队列
队列不仅用于执行现实生活中与排队有关的操作,还可以用于对数据进行排序。
思路:对于0~99的数字,技术排序将数据扫描两次,第一次按个位上的数字进行排序,第二次按十位上的数字进行排序。每个数字根据对应位上的数值被分在不同的盒子里(从0~9共10个盒子,用10个队列来表示)
优先队列
在一般情况下,从队列中删除的元素,一定是率先入队的元素。但是也有一些使用队列的应用,在删除元素时不必遵守先进先出的约定。这种应用,需要使用一个叫做优先队列
的数据结构来进行模拟。
从优先队列中删除元素是,需要考虑优先权的限制。比如医院急诊科的候诊室,当病人进入候诊室时,分诊护士会评估患者病情的严重程度,然后给一个优先级代码,高优先级的患者先于低优先级的患者就医,同样优先级的患者按照先来先服务的顺序就医。
出队函数变化如下:
function dequeue() {
var entry = '';
for(var i = 0; i < this.dataStore.length; i ++){
if(this.dataStore[i].code < this.dataStore[entry].code){
entry = i;
}
}
return this.dataStore.slice(i,1);
}
双向队列
Deque类:双向队列是一个和队列类似的数据结构,允许从队列两端添加和删除元素。
队列--数据结构与算法JavaScript描述(5)的更多相关文章
- 《数据结构与算法JavaScript描述》
<数据结构与算法JavaScript描述> 基本信息 作者: (美)Michael McMillan 译者: 王群锋 杜欢 丛书名: 图灵程序设计丛书 出版社:人民邮电出版社 ISBN:9 ...
- 翻阅《数据结构与算法javascript描述》--数组篇
导读: 这篇文章比较长,介绍了数组常见的操作方法以及一些注意事项,最后还有几道经典的练习题(面试题). 数组的定义: JavaScript 中的数组是一种特殊的对象,用来表示偏移量的索引是该对象的属性 ...
- 数据结构与算法javascript描述
<数据结构与算法javascript描述>--数组篇 导读: 这篇文章比较长,介绍了数组常见的操作方法以及一些注意事项,最后还有几道经典的练习题(面试题). 数组的定义: JavaScri ...
- 列表的实现-----数据结构与算法JavaScript描述 第三章
实现一个列表 script var booklist = new List(); booklist.append('jsbook'); booklist.append('cssbook'); book ...
- 《数据结构与算法JavaScript描述》中的一处错误
最近在看<数据结构与算法JavaScript描述>这本书,看到选择排序这部分时,发现一个比较大的错误. 原书的选择排序算法是这样的: function selectionSort() { ...
- 数据结构与算法 Javascript描述
数据结构与算法系列主要记录<数据结构与算法 Javascript描述>学习心得
- 读后感:数据结构与算法JavaScript描述
本书看完,对常见的数据结构与算法从概念上有了更深入的理解. 书中关于数组.栈和队列.链表.字典.散列.集合.二叉树.图.排序.检索.动态规划.贪心算法都有详细的介绍.算是一本不错的学习书籍. 栈和队列 ...
- 数据结构与算法JavaScript描述——使用队列
1.使用队列:方块舞的舞伴分配问题 前面我们提到过,经常用队列模拟排队的人.下面我们使用队列来模拟跳方块舞的人.当 男男女女来到舞池,他们按照自己的性别排成两队.当舞池中有地方空出来时,选两个队 列中 ...
- 数据结构与算法JavaScript描述——队列
注:澄清一个bug: /** * 删除队首的元素: */ function dequeue(){ return this.dataStore.shift(); } 应该有return: 队列是一种 ...
随机推荐
- oracle 递归查询(来源于网络)
比如 a b a c a e b b1 b b2 c c1 e e1 e e3 d d1 指定parent=a,选出 a b a c a e b ...
- IO文件操作
× 目录 [1]IO文件的操作 [2]Directory类 [3]File类 [4]FileStream类 [5]文本文件的操作 一.IO文件的操作: .net中对文件操作,经常会用到这样几个类: ...
- MYSQL导入excel
MYSQL使用navicat导入excel 第一步:首先需要准备好有数据的excel 第二步:选择"文件"->"另存为",保存为"CSV(逗号分 ...
- Html : 将submit变成像文字一样的按钮
直接上代码: <html> <head> <title>像文字一样的按钮</title> <style> body{ background- ...
- Docker build 安装报错, Could not open requirments file: [Errno 2] No such file or directory:'requirements.txt'
docker安装教程 https://docs.docker.com/get-started/part2/#build-the-app 相关帖子 https://stackoverflow.com/q ...
- c++为什么定义了析构函数的类的operator new[]传入的参数会多4字节?
问题: 在网上看人写了这么一段代码: class A { public: A() { std::cout<<"call A constructor"<< ...
- 创建React工程:React工程模板
这是本人初学React做的学习笔记;讲的不是很深,只算是简单的进行介绍. 这是一个小系列.都是在同一个模板中搭建的,但是代码是不能正常执行的. >>index.js <!DOCTYP ...
- MySQL安装和简单操作
MySQL数据库安装与配置详解 MySQL的安装请参考下面这篇博客,讲述的非常详细,各种截图也很清晰.http://www.cnblogs.com/sshoub/p/4321640.html MySQ ...
- hdu-3015 Disharmony Trees---离散化+两个树状数组
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=3015 题目大意: 有一些树,这些树的高度和位置给出.现在高度和位置都按从小到大排序,对应一个新的ra ...
- LA 2957 最大流,最短时间,输出路径
题目链接:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&category=1 ...