您好,欢迎访问一九零五行业门户网

JavaScript优先队列与循环队列实例详解

本文主要介绍了javascript数据结构之优先队列与循环队列,结合实例形式较为详细的分析了javascrip数据结构中优先队列与循环队列的原理、定义与使用方法,需要的朋友可以参考下,希望能帮助到大家。
优先队列
实现一个优先队列:设置优先级,然后在正确的位置添加元素。
我们这里实现的是最小优先队列,优先级的值小(优先级高)的元素被放置在队列前面。
//创建一个类来表示优先队列 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 运行结果:
得到一份名单,把里面的名字全都加入队列。给定一个数字,然后迭代队列。从队列头移除一项,加入到队列尾部,模拟循环队列。一旦传递次数达到给定的数字,拿到花的那个人就被淘汰。最后只剩一个人的时候,他就是胜利者。
相关推荐:
详解优先队列在jdk中的实现方式
php 数据结构队列(splqueue)和优先队列(splpriorityqueue)简单使用实例_php教程
javascript中利用数组实现的循环队列代码_javascript技巧
以上就是javascript优先队列与循环队列实例详解的详细内容。
其它类似信息

推荐信息