JavaScript-实现数据结构-优先级队列

时间:2020-9-7 作者:admin

优先级队列

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

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>
声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。