JavaScript
发布时间:2022-04-16 发布网站:大佬教程 code.js-code.com
大佬教程收集整理的这篇文章主要介绍了JavaScript数据结构之优先队列与循环队列实例详解,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
本文实例讲述了JavaScript数据结构之优先队列与循环队列。分享给大家供大家参考,具体如下:
优先队列
实现一个优先队列:设置优先级,然后在正确的位置添加元素。
我们这里实现的是最小优先队列,优先级的值小(优先级高)的元素被放置在队列前面。
//创建一个类来表示优先队列
function Priorityqueue()
{
var items=[];//保存队列里的元素
function QueueEle(e,
p){//元素节点,有两个属性
thi
s.element=e;//值
thi
s.priority=p;//优先级
}
thi
s.enqueue=function(e,
p){//添加一个元素到队列尾部
var queueEle=new QueueEle(e,
p);
var added=
false;
//priority小的优先级高,优先级高的在队头
if(thi
s.isEmpty())
{
item
s.push(queueEl
E);
}else
{
for(var i
=0;i
queueEle.priority){
items.splice(i,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',// QueueEle { element: 'a',priority: 2 },// QueueEle { element: 'c',// QueueEle { element: 'd',priority: 2 } ]
运行结果:
![JavaScript数据结构之优先队列与循环队列实例详解 JavaScript数据结构之优先队列与循环队列实例详解](https://files.jb51.cc/file_images/article/201710/20171027120705331.jpg?201792712727)
在正确的位置添加元素:如果队列为空,可以直接将元素入列。否则,就需要比较该元素与其他元素的优先级。当找到一个比要添加的元素优先级更低的项时,就把新元素插入到它之前,这样,对于其他优先级相同,但是先添加到队列的元素,我们同样遵循先进先出的原则。
最大优先队列:优先级的值大的元素放置在队列前面。
循环队列
实现击鼓传花游戏。
//创建一个类来表示队列
function Queue()
{
var items=[];//保存队列里的元素
thi
s.enqueue=function(
E){//添加一个元素到队列尾部
item
s.push(
E);
}
thi
s.dequeue=function()
{//移除队列的第一项,
并返回
return item
s.shift(
);
}
thi
s.front=function()
{//返回队列的第一项
return items
[0];
}
thi
s.isEmpty=function()
{//如果队列中部包含任何元素,返回true,否则返回
false
return item
s.length=
=0;
}
thi
s.mylength=function()
{//返回队列包含的元素个数
return item
s.length;
}
thi
s.clear=function()
{//清除队列中的元素
items=[];
}
thi
s.print=function()
{//打印队列中的元素
console.log(items
);
}
}
//击鼓传花
function hotPotato(namelist,num)
{
var queue=new Queue(
);
for(var i
=0;i
1){
for(i=0;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数据结构之优先队列与循环队列实例详解](https://files.jb51.cc/file_images/article/201710/20171027120731221.jpg?201792712835)
得到一份名单,把里面的名字全都加入队列。给定一个数字,然后迭代队列。从队列头移除一项,加入到队列尾部,模拟循环队列。一旦传递次数达到给定的数字,拿到花的那个人就被淘汰。最后只剩一个人的时候,他就是胜利者。
更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》、《》及《》
希望本文所述对大家JavaScript程序设计有所帮助。
大佬总结
以上是大佬教程为你收集整理的JavaScript数据结构之优先队列与循环队列实例详解全部内容,希望文章能够帮你解决JavaScript数据结构之优先队列与循环队列实例详解所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。