zoukankan      html  css  js  c++  java
  • JS中优先级队列实现

    <!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:

  • 相关阅读:
    swift基础语法(while循环语句)
    swift基础语法(if条件语句)
    swift基础语法(10-字典)
    swift基础语法(08-数组操作)
    swift基础语法(09-数组的其它操作)
    iOS--把网络获取图片进行不变形缩放
    CornerStone简单配置
    mac上搭建svn server
    iOS--利用比例纯代码适配屏幕大小
    iOS--当cell上显示不同数量图片的时候重用
  • 原文地址:https://www.cnblogs.com/malong1992/p/14727650.html
Copyright © 2011-2022 走看看