ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

JS中优先级队列实现

2021-05-03 16:36:33  阅读:140  来源: 互联网

标签:function priority 优先级 队列 items JS PriorityQueue prototype


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

标签:function,priority,优先级,队列,items,JS,PriorityQueue,prototype
来源: https://www.cnblogs.com/malong1992/p/14727650.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有