function Queue(){
var items = [];
this.enqueue = function (element){
items.push(element);//向队列尾部添加一个或者多个新的项
}
this.dequeue = function(){
return items.shift();//移除队列的第一个项,并返回被移除的元素
}
this.front = function(){
return items[0]//返回队列中的第一个元素
}
this.isEmpty = function(){
items = [];//队列中不包含任何元素
}
this.size = function(){
return items.length;//返回队列中包含的元素的个数
}
this.print = function(){
console.log(items.toString());//打印队列中元素的方法
}
}
var queue = new Queue();
console.log(queue.isEmpty());
queue.enqueue('bob');
queue.print();
console.log(queue.size());
console.log(queue.isEmpty());
queue.dequeue();
队列的原理是先进先出,在计算机科学及我们的生活中大量应用。
如下为优先队列
function PriorityQueue(){
var items = [];
function QueueElement (element,priority){
this.element = element;//元素
this.priority = priority;//优先级
}
this.enqueue = function(element,priority){
var queueElement = new QueueElement(element,priority);
if(this.isEmpty()){
items.push(queueElement);
}else{
var added = false;
for(var i=0;i<items.length;i++){
if(queueElement.priority<items[i].priority){
items.splice(i,0,queueElement);
add = true;
break;
}
}
}
if(!added){
items.push(queueElement);
}
}
}
var priorityQueue = new PriorityQueue();
priorityQueue.enqueue("John",2);
priorityQueue.enqueue("jack",1);
priorityQueue.enqueue("cidy",1);
priorityQueue.print();