千家信息网

JavaScript优先队列与循环队列怎么实现

发表于:2024-10-09 作者:千家信息网编辑
千家信息网最后更新 2024年10月09日,本篇内容介绍了"JavaScript优先队列与循环队列怎么实现"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学
千家信息网最后更新 2024年10月09日JavaScript优先队列与循环队列怎么实现

本篇内容介绍了"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;iqueueEle.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;i1){    for(i=0;i

运行结果:

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

"JavaScript优先队列与循环队列怎么实现"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

0