码迷,mamicode.com
首页 > 其他好文 > 详细

队列学习

时间:2020-03-02 14:29:22      阅读:71      评论:0      收藏:0      [点我收藏+]

标签:shift   受限   people   str   struct   原来   自动   封装   length   

//队列结构: 受限的线性结构,尊从先进先出的原则。只允许从表的前端进行删除操作,从表的后端进行插入操作
// 队列的封装
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)
}

 

队列学习

标签:shift   受限   people   str   struct   原来   自动   封装   length   

原文地址:https://www.cnblogs.com/little-oil/p/12395189.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!