宝哥软件园

JavaScript数据结构的优先级队列和循环队列示例的详细说明

编辑:宝哥软件园 来源:互联网 时间:2021-09-03

本文阐述了JavaScript数据结构中的优先级队列和循环队列。分享给大家参考,如下:

优先队列

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

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

//创建一个类来表示优先级队列函数priority queue(){ varitems=[];//将元素函数队列ele (e,p)保存在队列中{//元素节点有两个属性:this . element=e;//value this . priority=p;//priority } this . enqueue=function(e,p){//在queue的末尾添加一个元素var queueEle=new QueueEle(e,p);var added=false//优先级低的优先级高,优先级高的优先级在队列头if(this . isempty()){ items . push(queuele);} else { for(var I=0;iitems.lengthI){ if(items[I]. priorityqueuele . priority){ items . splice(I,0,queuele);added=true打破;} } if(!已添加){ items . push(queuele);} } } this . isempty=function(){ return items . length==0;} this . queue=function(){ return items . shift();} this . clear=function(){ items=[];} this . print=function(){ console . log(items);} this . my length=function(){ return items . length;} } var p queue=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 ',优先级: 2}的运算结果,//queuele {element :' c ',优先级: 2},//queuele {element :' d ',优先级3: { 2 }]:

在正确的位置添加元素:如果队列是空的,可以直接将元素放在列中。否则,您需要将此元素的优先级与其他元素进行比较。当发现优先级比要添加的元素低的项目时,会在它之前插入新元素,这样对于优先级相同但先添加到队列中的其他元素,我们也遵循先进先出的原则。

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

循环排队

实现传递包裹的游戏。

//创建一个类来表示队列函数Queue(){ var items=[];//将元素保存在队列中this.enqueue=function(e){//向items.push(e)中添加一个元素到队列的末尾;} this . queue=function(){//移除队列中的第一项并返回return items . shift();} this.front=function(){//返回队列[0]的第一项;} this.isEmpty=function(){//如果队列中间有任何元素,则返回true,否则返回false返回items . length==0;} this.mylength=function(){//返回队列中返回items.length的元素个数;} this.clear=function(){//清除队列中的元素items=[];} this.print=function(){//打印队列中的元素console . log(items);} }//传递包裹函数烫手山芋(namelist,num){ varqueue=new queue();for(var I=0;inamelist.lengthI){ queue . enqueue(name list[I]);} var消除=' ';while(queue . my length)(1){ for(I=0;因纽姆;i ){ queue.enqueue(queue .出列());}已消除=queue . queue();Console.log('消除'消除);} return queue . queue();}var namelist=['a ',' b ',' c ',' d ',' e '];var winner=HotPioto(name list,7);Console.log(胜者为王);//消除c//消除b//消除e//消除d//a获胜操作结果:

拿到一份名单,把所有的名字都排在队列里。给出一个数字,然后遍历队列。从队列头移除一个项目,并将其添加到队列尾,以模拟循环队列。一旦通行证的数量达到给定的数量,获得鲜花的人就会被淘汰。当最后只剩下一个人的时候,他就是赢家。

更多对JavaScript相关内容感兴趣的读者可以查看本网站专题:《JavaScript数据结构与算法技巧总结》、《JavaScript数学运算用法总结》、《JavaScript排序算法总结》、《JavaScript遍历算法与技巧总结》、《JavaScript查找算法技巧总结》、《JavaScript错误与调试技巧总结》、0103010

希望本文对JavaScript编程有所帮助。

更多资讯
游戏推荐
更多+