全国咨询热线:18720358503

漯河微信小程序开发_JavaScript数据结构之优先行列

类别:企业动态 发布时间:2021-01-11 浏览人次:

JavaScript数据结构之优先队列与循环队列实例详解       这篇文章主要介绍了JavaScript数据结构之优先队列与循环队列,结合实例形式较为详细的分析了javascrip数据结构中优先队列与循环队列的原理、定义与使用方法,需要的朋友可以参考下

本文实例讲述了JavaScript数据结构之优先队列与循环队列。分享给大家供大家参考,具体如下:

优先队列

实现一个优先队列:设置优先级,然后在正确的位置添加元素。

我们这里实现的是最小优先队列,优先级的值小(优先级高)的元素被放置在队列前面。

//创建一个类来表示优先队列
function Priorityqueue(){
 var items=[];//保存队列里的元素
 function QueueEle(e,p){//元素节点,有两个属性
 this.element=e;//值
 this.priority=p;//优先级
 this.enqueue=function(e,p){//添加一个元素到队列尾部
 var queueEle=new QueueEle(e,p);
 var added=false;
 //priority小的优先级高,优先级高的在队头
 if(this.isEmpty()){
 items.push(queueEle);
 }else{
 for(var i=0;i items.length;i++){
 if(items[i].priority queueEle.priority){
 items.splice(i,0,queueEle);
 added=true;
 break;
 if(!added){
 items.push(queueEle);
 this.isEmpty=function(){
 return items.length==0;
 this.dequeue=function(){
 return items.shift();
 this.clear=function(){
 items=[];
 this.print=function(){
 console.log(items);
 this.mylength=function(){
 return items.length;
var pqueue=new Priorityqueue();
pqueue.enqueue('a',2);
pqueue.enqueue('b',1);
pqueue.enqueue('c',2);
pqueue.enqueue('d',2);
pqueue.enqueue('e',1);
pqueue.print();
//[ QueueEle { element: 'b', priority: 1 },
// QueueEle { element: 'e', priority: 1 },
// QueueEle { element: 'a', priority: 2 },
// QueueEle { element: 'c', priority: 2 },
// QueueEle { element: 'd', priority: 2 } ]

运行结果:

在正确的位置添加元素:如果队列为空,可以直接将元素入列。否则,就需要比较该元素与其他元素的优先级。当找到一个比要添加的元素优先级更低的项时,就把新元素插入到它之前,这样,对于其他优先级相同,但是先添加到队列的元素,我们同样遵循先进先出的原则。

最大优先队列:优先级的值大的元素放置在队列前面。

循环队列

实现击鼓传花游戏。

//创建一个类来表示队列
function Queue(){
 var items=[];//保存队列里的元素
 this.enqueue=function(e){//添加一个元素到队列尾部
 items.push(e);
 this.dequeue=function(){//移除队列的第一项,并返回
 return items.shift();
 this.front=function(){//返回队列的第一项
 return items[0];
 this.isEmpty=function(){//如果队列中部包含任何元素,返回true,否则返回false
 return items.length==0;
 this.mylength=function(){//返回队列包含的元素个数
 return items.length;
 this.clear=function(){//清除队列中的元素
 items=[];
 this.print=function(){//打印队列中的元素
 console.log(items);
//击鼓传花
function hotPotato(namelist,num){
 var queue=new Queue();
 for(var i=0;i namelist.length;i++){
 queue.enqueue(namelist[i]);
 var eliminated='';
 while(queue.mylength() 1){
 for(i=0;i i++){
 queue.enqueue(queue.dequeue());
 eliminated=queue.dequeue();
 console.log("淘汰"+eliminated);
 return queue.dequeue();
var namelist=['a','b','c','d','e'];
var winner=hotPotato(namelist,7);
console.log(winner+"获胜");
//淘汰c
//淘汰b
//淘汰e
//淘汰d
//a获胜

运行结果:

得到一份名单,把里面的名字全都加入队列。给定一个数字,然后迭代队列。从队列头移除一项,加入到队列尾部,模拟循环队列。一旦传递次数达到给定的数字,拿到花的那个人就被淘汰。最后只剩一个人的时候,他就是胜利者。

更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》、《》及《》

希望本文所述对大家JavaScript程序设计有所帮助。


推荐阅读

漯河微信小程序开发_JavaScript数据结构之优先行列

JavaScript数据信息构造之优先选择序列与循环系统序列案例详细说明 本文关键详细介绍了JavaScript数据信息构造之优先选择序列与循环系统序列,融合案例方式比较详尽的剖析了java...

2021-01-11
前有阿里,中有京东,拼多多还想崛起,难?

一些朋友常常讨论到拼多多平台时,觉得是必死毫无疑问,缘故非常简单,拼多多平台玩的这种低线销售市场手机游戏、对策,当初淘宝网都玩过。但时期不容易再让你漂白、发展、抬...

2021-01-11
重庆俊钦物业管理有限公司

企业于200八年8月经重庆市市工商局局备案申请注册创立— —三级物业管理管理方法资质证书,目前职工800余名,重庆市俊钦是一家集保安人员、保洁服务、劳务公司外派...

2021-01-11
佛山营销网站建设制作-昌平赴任辛庄、辛庄村、

创造我国企业网站建设优良知名品牌仅有顾客的令人满意,才有大家的发展趋势!!在线客服热线电话: 营销推广热线电话: 昌平赴任辛庄、辛庄村、北邵洼村文化艺术室扩建工程工程项...

2021-01-11
广州凡科互联网科技股份有限公司招聘外贸专员

招聘人数:2职位信息1大专以上学历;2.两年以上相关工作经验; 职能类别:...

2021-01-11
预约登记小程序_js时间戳与日期格局之间转换详

js時间戳与时间文件格式中间变换详细说明 文章投稿:lijiao 本文关键为大伙儿详尽详细介绍了js時间戳与时间文件格式中间变换,具备一定的参照使用价值,很感兴趣的小伙子伴们...

2021-01-11
X

400-8700-61718720358503
企业邮箱2639601583@qq.com
官方微信