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

    //队列结构: 受限的线性结构,尊从先进先出的原则。只允许从表的前端进行删除操作,从表的后端进行插入操作
    // 队列的封装
    class Queue {
        constructor() {
            this.items=[]
        }
        // 1.向队列尾部添加一个新的项
        enqueue(element) {
            this.items.push(element)
        }
        // 2.移除队列第一项,并返回第一项
        dequeue() {
            return this.items.shift()
        }
        // 3.返回队列中第一项
        front() {
            return this.items[0]
        }
        // 4.判断队列中是否为空
        isEmpty() {
            return this.items.length === 0
        }
        // 5.获取队列中元素个数
        size() {
            return this.items.length
        }
        // 6.toString
        toString() {
            return this.items.join(' ')
        }
    }
    
    // 队列应用
    //几个人围成一圈,开始数数,数到某个数的人自动淘汰,然后下一个人从头开始数,依次类推
    // 最后剩下的人在原来的什么位置
    
    function startGame(people,num) {
        var queue= new Queue();
        // people 中所有的元素 放入队列中
        [].forEach.call(people,item=>{
            queue.enqueue(item)
        })
        while (queue.size()>1) { // 一直到队列中只有一个人为止
            //从一开始报数,到num-1
            for(var i=1;i<num-1;i++) {
                queue.enqueue(queue.dequeue())
            }
            // 到num 队列中删除当前报数人
            queue.dequeue()
        }
        // 最后剩下的人
        let last= queue.front();
        // 返回下标
        return [].indexOf.call(people,last)
    }
  • 相关阅读:
    H5 坑
    小程序上传图片
    小程序瀑布流
    vue 使用插件
    fastclick:处理移动端click事件300毫秒延迟
    h5知识总结
    vue 瀑布流实现
    vue组件 $children,$refs,$parent的使用详解
    vue轮播插件vue-awesome-swiper
    JS判断是否在微信浏览器打开
  • 原文地址:https://www.cnblogs.com/little-oil/p/12395189.html
Copyright © 2011-2022 走看看