跟我一起创建队列

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();
原文地址:https://www.cnblogs.com/smart-girl/p/11343530.html