首页 > Web开发 > 详细

JS中优先级队列实现

时间:2021-05-03 18:34:16      阅读:26      评论:0      收藏:0      [点我收藏+]
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>优先级队列</title>
</head>
<body>
    <script>
        //封装优先级队列
        function PriorityQueue(){
            //在PriorityQueue里重新创建一个类,可以理解为内部类

            function QueueElement(element,priority){

                this.element=element;
                this.priority =priority;

            }

            //封装属性
            this.items = [];

            //实现插入方法
            PriorityQueue.prototype.enqueue = function(element,priority){
                //1.创造QueueElement 对象
                var queueElement = new QueueElement(element,priority)

                //2.判断队列是否为空
                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].priority){
                            this.items.splice(i,0,queueElement)

                            added =true;
                            break
                        }

                    }

                    if(!added){
                        this.items.push(queueElement)
                    }
                }
            }

        //2.移除队列的第一个元素,并返回被移除的元素
        PriorityQueue.prototype.deQueue = function(){
           return this.items.shift()
         }

         //3.查看前端的元素
         PriorityQueue.prototype.front = function(){
             return this.items[0]
         }

         //4.判断队列是否为空
         PriorityQueue.prototype.isEmpty = function(){
             return this.items.length ===0
         }

         //5.返回队列里的元素
         PriorityQueue.prototype.size = function(){
            return this.items.length
         }
         
         //6.toString
         PriorityQueue.prototype.toString =function(){
            let resultsString = ‘‘
                 for(var i =0; i<this.items.length;i++){
                    resultsString += this.items[i] + 
                 }

                 return resultsString
         }
         

        }

        var pq = new PriorityQueue()
        pq.enqueue(abc,120)
        pq.enqueue(abce,100)
        pq.enqueue(abce,10)

        console.log(pq);



    </script>
    
</body>
</html>

运行结果

技术分享图片

 

PS:

技术分享图片

JS中优先级队列实现

原文:https://www.cnblogs.com/malong1992/p/14727650.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!