zoukankan      html  css  js  c++  java
  • js 队列

    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
    </head>
    <body>
        <script>
            function Queue(){
                let item = [];
                this.enqueue=function(element){
                    item.enqueue(element);
                }
                // rem 第一项
                this.dequeue=function(){
                    item.shift();
                }
                // 返回第一个
                this.front=function(){
                    return item[0];
                }
                // 检查栈是否为空
                this.isEmpty= function(){
                    return (item.length == 0);
                }
                // 长度
                this.size= function(){
                    return item.length;
                }
                // 打印队列
                this.print=function(){
                    console.log( item.toString() );
                }
            }
    
            function PriorityQueue(){
                item = [];
                // element 元素 priorty 优先级
                function QueueElement ( element , priority ){
                    this.element = element;
                    this.priority = priority;
                
                }
    
                // 检查栈是否为空
                this.isEmpty= function(){
                    return (item.length == 0);
                }
                this.enqueue = function( element,priority ){
                    let queueElement = new QueueElement( element , priority );
    
                    var added = false;
                    if ( item.length !=0 ){
                        for( let i=0; i<item.length; i++){
                            
                            // 通过遍历 当前的 优先级也就是 ( item中 )priority 是否大于 我们要插入的值的 优先级
                            if( queueElement.priority < item[i].priority ){  // 
                                added = true;
                                item.splice( i , 0 , queueElement );  // splice 在指定 i 位置前 插入我们的元素
                                break ;
                            }
                        }
                            if( added == false ){
                                // 在 否的情况下 直接 在数组末尾进行插入就 OK
                                item.push( queueElement );
                            }
                    }else{
                        item.push(queueElement)
                    }
                
    
                    // 输出-> 打印
                    this.print = function(){
                        for( let i=0; i<item.length; i++){
                            console.log( `${item[i].element} - ${item[i].priority}` )
                        }
                        console.log(item.length)
                    }
                }
            }
            
            let priorityQueue = new PriorityQueue();
            priorityQueue.enqueue('johh',2);
            priorityQueue.enqueue('tom',3);
            priorityQueue.enqueue('motn',1);
            priorityQueue.enqueue('motn',2);
            priorityQueue.print()
        </script>
    </body>
    </html>
  • 相关阅读:
    iOS SDK:预览和打开文档
    显示手机内联系人数量
    已知一点的经纬度和该点到另一点的距离,求另一点的经纬度
    坚持让自己的每次尝试都做到极限
    2016第52周一时间的朋友读书会
    2016年第51周日三岁看大?
    2016第51周五产品经理的十大错误
    2016第51周四外甥女走丢记
    2016第51周三产品经理如何更有说服力
    2016第51周二
  • 原文地址:https://www.cnblogs.com/ar13/p/8000719.html
Copyright © 2011-2022 走看看