(js描述的)数据结构[队列结构,优先级队列](3)
(js描述的)数据结构[队列结构](3)
一.队列结构的特点:
1.基于数组来实现,的一种受限的线性结构。
2.只允许在表头进行删除操作,在表尾进行插入操作。
3.先进先出(FIFO)
二.队列的一些应用:
1.按一定顺序打印文档,执行输出后的结果。
2.多线程的实际执行顺序,就如队列结构相似。
三.队列的封装:
function Queue() {
this.items = []
//向队尾添加一个元素
Queue.prototype.enqueue = function (element) {
this.items.push(element)
}
//从队头删除一个元素
Queue.prototype.dequeue = function () {
this.items.shift()
}
//返回队列中第一个元素
Queue.prototype.front = function() {
return this.items[0]
}
//检查队列是否为空
Queue.prototype.isEmpty = function () {
return this.items.length == 0
}
//返回队列的长度
Queue.prototype.size = function () {
return this.items.length
}
//返回队列的字符串形式
Queue.prototype.toString = function () {
var str = ''
for (var i=0; i< this.items.length; i++) {
str += this.items[i] + ' '
}
return str
}
}
四.队列应用的一些实例:
一.击鼓传花:
1.规则: 几个人按一定顺序轮流数数,数到给定数字者淘汰,
最后留下的一人为胜利者。需要得到最后的人名字及在原来数组中的索引序号?
function passGame(nameList, num) {
var queue = new Queue()
for (var i = 0; i< nameList.length ; i++) {
queue.enqueue(nameList[i])
}
while (queue.size() > 1) {
for (var i = 0; i< num - 1; i++) {
queue.enqueue(queue.dequeue())
}
queue.dequeue()
}
var endName = queue.dequeue()
var index = nameList.indexOf(endName)
return {index: endName}
}
五.优先级队列
1.插入的位置根据优先级而定,所以传入的数据必须携带哦优先级,其他操作与普通队列一样。(使用了内部类来增加带有优先级数据的封装性)。
function PriorityQueue() {
function PriorityElement(element, priority) {
this.element = element;
this.priority = priority;
}
this.items = [];
PriorityQueue.prototype.enqueue = function(element, priority) {
var priorityElement = new PriorityElement(element, priority);
if (this.items.length === 0) {
this.items.push(priorityElement);
} else {
var flag = false;
for (var i = 0; i < this.items.length; i++) {
if (priorityElement.priority <= this.items[i].priority) {
this.items.splice(i, 0, priorityElement);
flag = true;
}
}
if (!flag) {
this.items.push(priorityElement);
}
}
}
(js描述的)数据结构[队列结构,优先级队列](3)的更多相关文章
- (js描述的)数据结构[集合结构](6)
(js描述的)数据结构[集合结构](6) 一.集合结构特点 1.集合中的元素不能重复. 2.集合是无序的. 二.集合的代码实现 function Set() { this.items = {} //1 ...
- (js描述的)数据结构[栈结构](2)
(js描述的)数据结构[栈结构](2) 一.什么是栈结构 1.一种受限制的线性结构,这种结构可以基于数组来实现. 2.可以抽象成一个容器,上面的是栈顶,底下的是栈底.所以仅允许对栈顶进行操作, 二.栈 ...
- java数据结构----队列,优先级队列
1.队列:和栈中的情况不同,队列中的数据项不总是从数组下标0开始,移除一个数据项后,队头指针会指向下标较高的数据项,其特点:先入先出 2.图解 3.队列的实现代码: 3.1.Queue.java pa ...
- java实现 数据结构:链表、 栈、 队列、优先级队列、哈希表
java实现 数据结构:链表. 栈. 队列.优先级队列.哈希表 数据结构javavector工作importlist 最近在准备找工作的事情,就复习了一下java.翻了一下书和网上的教材,发现虽然 ...
- (js描述的)数据结构[哈希表1.1](8)
(js描述的)数据结构[哈希表1.1](8) 一.数组的缺点 1.数组进行插入操作时,效率比较低. 2.数组基于索引去查找的操作效率非常高,基于内容去查找效率很低. 3.数组进行删除操作,效率也不高. ...
- (js描述的)数据结构[双向链表](5)
(js描述的)数据结构[双向链表](5) 一.单向链表的缺点 1.只能按顺序查找,即从上一个到下一个,不能反过来. 二.双向链表的优点 1.可以双向查找 三.双向链表的缺点 1.结构较单向链表复杂. ...
- (js描述的)数据结构[链表](4)
(js描述的)数据结构 [链表](4) 一.基本结构 二.想比于数组,链表的一些优点 1.内存空间不是必须连续的,可以充分利用计算机的内存,事项灵活的内存动态管理. 2.链表不必再创建时就确定大小,并 ...
- (js描述的)数据结构[字典](7)
(js描述的)数据结构[字典](7) 一.字典的特点 1.字典的主要特点是一一对应关系. 2.使用字典,剋通过key取出对应的value值. 3.字典中的key是不允许重复的,而value值是可以重复 ...
- 用JS描述的数据结构及算法表示——栈和队列(基础版)
前言:找了上课时数据结构的教程来看,但是用的语言是c++,所以具体实现在网上搜大神的博客来看,我看到的大神们的博客都写得特别好,不止讲了最基本的思想和算法实现,更多的是侧重于实例运用,一边看一边在心里 ...
随机推荐
- SQL中rownumber的用法
1)一次排名: 语法:row_number() over(order by 字段 desc/asc):按照某个字段排名 1.1.查询语句: 1.2.查询结果:查询结果按照薪水进行排名 2)先分组后排名 ...
- 原生的ajax,get post请求需要注意的地方
1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.o ...
- WEB应用之http协议和httpd闲聊
什么是web?在日常生活中我们常常听到web这个词,它到底是什么呢?今天我们来聊一聊web应用http协议:相信生活在如今互联网时代的我们,http这个协议应该对我们不是很陌生吧!比如双十一双十二我们 ...
- table 上下左右 4根线的写法 :before :after 他们就能把td里面右下的那颗线给盖上 还有body和header横向滚动的联动 || 不能把body套在header上是为了上header表头固定 || 还有表头header的右侧overflow-y 是否出现滚动条的位置 记得有一个$nextTick 要不然会获取不到高度 高度就为0了 || 横向滚动条纵向滚动条
table 上下左右 4根线的写法 <!--* @description 重点查核人员表!--><template> <div class="keyChecke ...
- Python基础篇(一)_基本语法元素
Python基础篇——基本语法元素 缩进:体现强制可读性,一般缩进4个空格.一个或多个Tab 注释:单行注释----以 # 开头 多行注释----每行以 # 开头,以 # 结束 变量:无须提前声明.可 ...
- DOTNET CORE源码分析之ServiceDescriptor
ServiceDescriptor在.net core中的作用就是DI中注入服务元素的描述.每一个元素核心内容部分包括需要注入的服务元素的类型ServiceType,它对应的接口(如果有的话)Impl ...
- JDK dump
1. 查看整个JVM内存状态 jmap -heap 1237(pid) 2.生成dump文件 jmap -dump:file=文件名.dump 1237(pid)
- Swift中的感叹号( ! )与问号( ? )之谜
基本了解 在Swift代码会经常看到定义属性或方法参数时类型后面会紧跟一个感叹号( ! )或问号( ? ), 刚开始接触Swift的童鞋就可能不太明白之代表什么意思,一头雾水,开始凌乱了. 本文将带你 ...
- 从零开始学习R语言(一)——数据结构之“向量”(Vector)
本文首发于知乎专栏:https://zhuanlan.zhihu.com/p/59688569 也同步更新于我的个人博客:https://www.cnblogs.com/nickwu/p/125370 ...
- 原创 记录一次线上Mysql慢查询问题排查过程
背景 前段时间收到运维反馈,线上Mysql数据库凌晨时候出现慢查询的报警,并把原始sql发了过来: --去除了业务含义的sql update test_user set a=1 where id=1; ...