实现优先级队列
- 封装元素和优先级放在一起(可以封装一个新的构造函数)
- 添加元素时,将新插入元素的优先级和队列中已经存在的元素优先级进行比较,以获得自己正确的位置
//实现优先级队列
function PriorityQueue(){
function QueueElement(element,priority){
this.elemennt = element;
this.priority = priority
}
var items = [];
PriorityQueue.prototype.enqueue = function(){
var queueElement = new QueueElement(element,priority)
if(this.items.length ==0){
this.items.push(queueElement)
}else{
var added = false;
for(var i = 0; i <this.items.length; i++){
if(queueElement.priority < this.items[i]){
this.items.splie(i,0,queueElement);
added = true;
break;
}
}
if(!added){
this.items.push(queueElement);
}
}
}
PriorityQueue.prototype.dequeue = function(){
this.items.shift();
}
PriorityQueue.prototype.front = function(){
return this.items[0];
}
PriorityQueue.prototype.isEmpty = function(){
return this.items.length == 0;
}
PriorityQueue.prototype.size = function(){
return this.items.length;
}
PriorityQueue.prototype.toString = function(){
var resultString = '';
for(var i = 0; i<this.items.length; i++){
resultString += this.items[i].element + '-' + this.items[i].priority + '' ;
}
return resultString;
}
}