优先级队列

实现优先级队列主要有两方面需要考虑:

1、封装元素和优先级放在一起
2、添加元素是,将新插入的元素的优先级和队列中已经存在的元素的优先级进行比较,以得到自己正确的位置

优先级队列在我们的日常生活中应用广泛,如飞机的头等舱。。。
代码实现如下:

<script>
    //封装优先级队列
    function PriorityQueue(){
        //在PriorityQueue重新创建了一个类,可以理解为内部类
        function QueueElement(element,priority){
            this.element = element; //当前数据项
            this.prority = priority;    //当前优先级
        }
        
        //封装属性
        this.items = [];
        
        //实现插入方法
        PriorityQueue.prototype.enqueue = function(element,priority){
            //1、创建QueueElement对象
            var queueElement = new QueuementElement(element,priority);
            //2、判断队列是否为空
            if(this.items.length == 0){
                this.item.push(queueElement);
            }else{
                var added = false;
                for(var i=0;i<this.items.length;i++){
                    if(queueElement.priority < this.items[i].priority){
                        this.items.splice(i,0,queueElement);
                        console.log(queueElement);
                        added = true;
                        break;
                    }
                }
                if(!added){
                    this.item.push(queueElement);
                }
            }
        }
        //toString方法
        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;
        }
    }
    
    //测试优先级队列
    var pq = new PriorityQueue();
    pq.enqueue('nba',111);
    pq.enqueue('cba',40);
    alert(pq);
</script>

王超
42 声望1 粉丝

世间美好,与你环环相扣。