这里之所以扩充一个 有限队列 是因为,生活使用中队列通常会附加优先级,比如排队买票,一般老人和军人等会有优先权限。

实现:继承上篇的 普通队列实现。这里用一种方法,入队的时候,进行排序插入到指定位置,输出不变。

优先队列类

//继承自 Queue
function PriorityQueue(){
Queue.call(this);
}

  

继承原型方法

function base(p, c){
var h = {}, P = p.prototype, C = c.prototype;
for(var k in C){
h[k] = 1;
}
for(var k in P){
if(!h[k]){
C[k] = P[k];
}
}
}
base(Queue, PriorityQueue);

  

添加数据

// 增加一个节点类
function Node(element, priority){
this.element = element;
this.priority = priority;
}
// 更新添加
PriorityQueue.prototype.enqueue = function (element, priority){
var node = new Node(element, priority);
if(this.isEmpty()){
this.data.push(node);
}else{
var add = false;
for(var i = 0,len=this.data.length; i<len; i++){
if(node.priority < this.data[i].priority){
this.data.splice(i, 0, node);
add = true;
break;
}
}
if(!add){
this.data.push(node);
}
}
}

  

完整代码

function PriorityQueue(){
Queue.call(this);
}
function base(p, c){
var h = {}, P = p.prototype, C = c.prototype;
for(var k in C){
h[k] = 1;
}
for(var k in P){
if(!h[k]){
C[k] = P[k];
}
}
}
base(Queue, PriorityQueue);
function Node(element, priority){
this.element = element;
this.priority = priority;
}
PriorityQueue.prototype.enqueue = function (element, priority){
var node = new Node(element, priority);
if(this.isEmpty()){
this.data.push(node);
}else{
var add = false;
for(var i = 0,len=this.data.length; i<len; i++){
if(node.priority < this.data[i].priority){
this.data.splice(i, 0, node);
add = true;
break;
}
}
if(!add){
this.data.push(node);
}
}
}
PriorityQueue.prototype.print = function (){
console.dir(this.data)
}

  下面研究链表

javascript数据结构-优先队列的更多相关文章

  1. 为什么我要放弃javaScript数据结构与算法(第四章)—— 队列

    有两种结构类似于数组,但在添加和删除元素时更加可控,它们就是栈和队列. 第四章 队列 队列数据结构 队列是遵循FIFO(First In First Out,先进先出,也称为先来先服务)原则的一组有序 ...

  2. 学习JavaScript数据结构与算法 (二)

    学习JavaScript数据结构与算法 的笔记 包含第四章队列, 第五章链表 本人所有文章首发在博客园: http://www.cnblogs.com/zhangrunhao/ 04队列 实现基本队列 ...

  3. JavaScript 数据结构与算法之美 - 线性表(数组、栈、队列、链表)

    前言 基础知识就像是一座大楼的地基,它决定了我们的技术高度. 我们应该多掌握一些可移值的技术或者再过十几年应该都不会过时的技术,数据结构与算法就是其中之一. 栈.队列.链表.堆 是数据结构与算法中的基 ...

  4. 【JavaScript数据结构系列】03-队列Queue

    [JavaScript数据结构系列]03-队列Queue 码路工人 CoderMonkey 转载请注明作者与出处 1. 认识队列Queue结构 队列,跟我们的日常生活非常贴近,我们前面举例了食堂排队打 ...

  5. 【JavaScript数据结构系列】04-优先队列PriorityQueue

    [JavaScript数据结构系列]04-优先队列PriorityQueue 码路工人 CoderMonkey 转载请注明作者与出处 ## 1. 认识优先级队列 经典的案例场景: 登机时经济舱的普通队 ...

  6. 【JavaScript数据结构系列】00-开篇

    [JavaScript数据结构系列]00-开篇 码路工人 CoderMonkey 转载请注明作者与出处 ## 0. 开篇[JavaScript数据结构与算法] 大的计划,写以下两部分: 1[JavaS ...

  7. 学习javascript数据结构(三)——集合

    前言 总括: 本文讲解了数据结构中的[集合]概念,并使用javascript实现了集合. 原文博客地址:学习javascript数据结构(三)--集合 知乎专栏&&简书专题:前端进击者 ...

  8. 学习javascript数据结构(二)——链表

    前言 人生总是直向前行走,从不留下什么. 原文地址:学习javascript数据结构(二)--链表 博主博客地址:Damonare的个人博客 正文 链表简介 上一篇博客-学习javascript数据结 ...

  9. 学习javascript数据结构(一)——栈和队列

    前言 只要你不计较得失,人生还有什么不能想法子克服的. 原文地址:学习javascript数据结构(一)--栈和队列 博主博客地址:Damonare的个人博客 几乎所有的编程语言都原生支持数组类型,因 ...

随机推荐

  1. 修改js confirm alert 提示框文字的简单实例

    修改js confirm alert 提示框文字的简单实例: <!DOCTYPE html> <html> <head lang="en"> & ...

  2. App 引导界面

    App 引导界面 1.前言 最近在学习实现App的引导界面,本篇文章对设计流程及需要注意的地方做一个浅显的总结. 附上项目链接,供和我水平类似的初学者参考——http://files.cnblogs. ...

  3. cosbench read异常解决办法。 Unable to verify integrity of data download. Client calculated content hash didn't match hash calculated by Amazon S3. The data may be corrupt.

    问题:cosbench read测试failed 报错如下 Cosbench v0.4.2.c4 against Ceph (Hammer) / radosgw / HAproxy's HTTP en ...

  4. Fiddler 抓包工具总结

    阅读目录 1. Fiddler 抓包简介 1). 字段说明 2). Statistics 请求的性能数据分析 3). Inspectors 查看数据内容 4). AutoResponder 允许拦截制 ...

  5. layer弹窗监控键盘事件

    在开发中我们常常遇到客服各种其他问题,现在客服需要键盘按下关闭当前窗口事件和鼠标点击确定按钮事件一样. 我们需要在layer中编写一个监控事件.具体代码如下 layer.confirm('is not ...

  6. Android基础总结(二)

    常见布局 相对布局 RelativeLayout 组件默认左对齐.顶部对齐 设置组件在指定组件的右边 android:layout_toRightOf="@id/tv1" 设置在指 ...

  7. 解决:笔记本安装mint18时,安装界面显示不全

    近日在给自己的笔记本安装mint18时,安装界面显示不全,就是安装时到了分区界面后看不到下一步. 很无奈.... 于是胡乱摸索,得到解决的办法. 按住键盘上的ALT键,用鼠标向上拖动安装的界面,最好是 ...

  8. mac下配置Qt for Android+iOS

    ref: http://www.cnblogs.com/yjmyzz/p/4219829.html http://www.cnblogs.com/rophie/p/3226543.html http: ...

  9. wildfly jboss 优化配置

    参考调优:http://www.mastertheboss.com/jboss-server/jboss-performance/jboss-as-7-performance-tuning?showa ...

  10. <<< Tomcat 部署项目There are no resources that can be added or removed from the server

    错误信息:没有资源可以添加或删除的服务器 解决方式: 方式1.选中项目右键——找到Project Facets——勾选Dynamic Web Project和java 方式2.新建一个同名web项目, ...