队列--数据结构与算法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: 队列是一种 ...
随机推荐
- lnmp架构-负载均衡
一.几个基本概念 1.pv 值 pv 值(page views):页面的浏览量 概念:一个网站的所有页面,在一天内,被浏览的总次数.(大型网站通常是上千万的级别) 2.uv值 uv值(unique v ...
- 新版mysql 5.7的group_by非常不和谐
sqlalchemy.exc.OperationalError OperationalError: (_mysql_exceptions.OperationalError) (1055, " ...
- megacli使用
查看raid类型 /opt/RAID/MegaCli64 -ShowSummary -a0 System Operating System: Linux version 2.6.32-220.el6. ...
- Apache Module mod_ssl
http://httpd.apache.org/docs/current/mod/mod_ssl.html Description: Strong cryptography using the Sec ...
- ubuntu16.4安装 VirtualBox
1) 从oracle官网下载virtual box安装包 2) 安装支持包 sudo apt-get install libqt5x11extras5 libsdl1.2debian 3) sudo ...
- MySQL入门很简单: 1 数据库概述
1. 数据库概述 1.1 数据存储方式: 1)人工管理阶段 2)文件系统阶段: 文件系统通过文件的存储路径和文件名称访问文件中的数据 3)数据库系统阶段:Oracle, SQL Server, MyS ...
- Last_IO_Errno: 1062
主键冲突的错误 1062 模拟错误: 在主库上操作: create table test100(id int not null,name varchar(20),primary key(id) ...
- 前端高质量知识(二)-JS执行上下文(执行环境)详细图解Script
先随便放张图 我们在JS学习初期或者面试的时候常常会遇到考核变量提升的思考题.比如先来一个简单一点的. console.log(a); // 这里会打印出什么? var a = 20; PS: 变量提 ...
- ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id
远程删除key ssh-keygen -f "~/.ssh/known_hosts" -R 192.168.0.34 如果还是不可以,通过 ssh-keygen 重新生成key
- 1012: A MST Problem
1012: A MST Problem 时间限制: 1 Sec 内存限制: 32 MB提交: 63 解决: 33[提交][状态][讨论版][命题人:外部导入] 题目描述 It is just a ...