• 队列数组的实现


    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
    </head>
    <body>
        <script>
    
            //基于数组实现列
            function Queue(){
                //属性
                this.items = []
                // 1.将元素加入队列中
                Queue.prototype.enqueue = function(element){
                    this.items.push(element)
                }
                // 2.从队列中删除前端元素
                Queue.prototype.dequeue = function(){
                    return this.items.shift()
                }
                // 3.查看前端元素
                Queue.prototype.front = function(){
                    return this.items[0]
                }
                // 4.查看队列是否为空
                Queue.prototype.isEmpty = function(){
                    return this.items.length == 0
                }
                // 5.查看队列中元素的个数
                Queue.prototype.size = function(){
                    return this.items.length
                }
                // 6.toString方法
                Queue.prototype.toString = function(){
                    var resultString = ''
                    for(var i=0;i<this.items.length;i++){
                        resultString+=this.items[i]+''
                    }
                    return resultString
                }
                // 方法
            }
            var queue = new Queue()
            // 将元素加入到队列中
            queue.enqueue('abc')
            queue.enqueue('111')
            alert(queue)
            queue.dequeue()
            alert(queue)
            // 验证其他方法
            alert(queue.isEmpty())
            alert(queue.size())
    
        </script>
    </body>
    </html>
    

    击鼓传花的实现方法

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
    </head>
    <body>
        <script>
             //基于数组实现列
             function Queue(){
                //属性
                this.items = []
                // 1.将元素加入队列中
                Queue.prototype.enqueue = function(element){
                    this.items.push(element)
                }
                // 2.从队列中删除前端元素
                Queue.prototype.dequeue = function(){
                    return this.items.shift()
                }
                // 3.查看前端元素
                Queue.prototype.front = function(){
                    return this.items[0]
                }
                // 4.查看队列是否为空
                Queue.prototype.isEmpty = function(){
                    return this.items.length == 0
                }
                // 5.查看队列中元素的个数
                Queue.prototype.size = function(){
                    return this.items.length
                }
                // 6.toString方法
                Queue.prototype.toString = function(){
                    var resultString = ''
                    for(var i=0;i<this.items.length;i++){
                        resultString+=this.items[i]+''
                    }
                    return resultString
                }
                // 方法
            }
            var queue = new Queue()
            // 将元素加入到队列中
            queue.enqueue('abc')
            queue.enqueue('111')
            alert(queue)
            queue.dequeue()
            alert(queue)
            // 验证其他方法
            alert(queue.isEmpty())
            alert(queue.size())
            // 击鼓传花
            function passGame(nameList,num){
                // 创建队列结构
                var queue = new Queue()
                for(var i=0;i<nameList.length;i++){
                    queue.enqueue(nameList[i])
                }
                //开始数数字,
                // 不是num的时候,重新加入到队列的末尾
                // 是num这个数字的时候,将其从队列中删除
                // Num数字之前的人重新放到队列的末尾
                while(queue.size()>1){
                    for(var i=0;i<num-1;i++){
                        queue.enqueue(queue.dequeue())
                    }
                    //num对应的这个人,直接从队列中删除
                    dequeue.dequeue()
                }
            }
        </script>
    </body>
    </html>
    

    优先队列

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>优先队列</title>
    </head>
    <body>
        <script>
            // 封装优先级队列
            function PriorityQueue(){
                PriorityQueue.prototype.enqueue = function(element){
                    this.items.push(element)
                }
                // 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(){
                    var resultString = ''
                    for(var i=0;i<this.items.length;i++){
                        resultString+=this.items[i]+''
                    }
                    return resultString
                }
                //封装属性
                function QueueElement(element,priority){
                    this.element = element
                    this.priority = priority //数据的优先级
                }
                //封装属性
                this.items = []
                PriorityQueue.prototype.enqueue = function(element,priority){
                    //创建QueueElement
                var queueElement = new QueueElement(element,priority)
                // 判断队列是否为空
                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]){
                            self.items.splice(i,0,queueElement)
                            added = true 
                            break
                        }
                    }
                    if(!added){
                        this.items.push(queueElement)
                    }
                }
                }
            }
            //测试代码
            var pq = new PriorityQueue()
            pq.enqueue('abc',111)
            pq.enqueue('cnb',11)
            pq.enqueue('nbc',123)
            pq.enqueue('vbn',9)
            console.log('pq',pq)
            alert('pq',pq)
        </script>
    </body>
    </html>
    
  • 相关阅读:
    php7与其他版本共存
    centos源码安装mysql5.7
    禁用composer update命令
    lumen怎么得到当前Uri的控制器、Action、路由规则
    配置lumen的log为daily模式
    laravel如何打印orm封装的sql语句
    nginx 重写URL尾部斜杠
    Laravel的Nginx重写规则--让路由支持末尾加斜线
    laravel redis存数组并设置过期时间
    openresty
  • 原文地址:https://www.cnblogs.com/smart-girl/p/13447964.html
Copyright © 2020-2023  润新知