zoukankan      html  css  js  c++  java
  • 击鼓传花 队列形式

    一.队列的属性和方法:

     1. enqueue(ele) 进入队列:向队列尾部添加。

     2. dequeue() 出队:移除队列的第一个元素,并返回被移除的元素

     3. front() 返回队列的第一个元素,只返回不出队

     4. isEmpty() 判断队列是否为空

     5. size() 返回队列包含元素的个数 

    下面通过队列来玩一个击鼓传花的游戏

    <script>
        //模拟一个简单的队列
        class newArr{
            constructor(){
                this.arr=[]
            }
            enqueue(element){//入队
                this.arr.push(element)
                return element //返回进来的那个元素
            }
            dequeue(){//出队
                return this.arr.shift() //返回出队的那一个
            }
            front(){//返回队列的第一个元素,只返回但不出列
                if(this.arr.length>0){
                    return this.arr[0]
                }else{
                    return undefined
                }
            }
            isEmpty(){
                return this.arr.length>0
            }
            size(){//返回队列的长度
                return this.arr.length
            }
        }
        let list = ['鲁班','程咬金','廉颇','夏侯惇','张飞','狂铁','八戒','老夫子']
        //通过队列来模拟 击鼓传话游戏。被叫到的人物就要被踢出局,没被叫到的人物依次排队继续等待被叫,最终只有一个人胜出
        function pass(list,num){//num代表第几个
            let arr =new newArr()
            for(let i=0;i<list.length;i++){
                arr.enqueue(list[i])//首先让他们成为队列
            }
            while(arr.size()>1){//只要队列的长度大于1就让它循环
                for(let i=0;i<num;i++){
                    arr.enqueue(arr.dequeue())//让不符合条件的人物先出队,然后再入队
                }
                //此时符合条件的人物排到了第一个,把它踢出队列
                arr.dequeue()
            }
            return arr.front()//返回最终胜利者
        }
        console.log(pass(list,3))//狂铁胜利。
    </script>
  • 相关阅读:
    在HTML中使用css3实现雪人动画效果
    不一样的函数防抖和节流
    2020全球C++及系统软件技术大会成功落下帷幕
    详解flex布局做骰子案例
    LeetCode-环形链表|+环形链表||
    03:成绩排序
    02:奇数单增序列
    谁考了第k名
    【23.59%】【hdu 5883】The Best Path
    【30.53%】【hdu 5878】I Count Two Three
  • 原文地址:https://www.cnblogs.com/menggege/p/14146717.html
Copyright © 2011-2022 走看看