JS数据结构与算法之队列(基于数组)

function Queue() {
    this.items = []
    // 向队列尾部添加元素
    Queue.prototype.enQueue = ele => {
        this.items.push(ele)
    }
    //移除并返回队列第一个元素
    Queue.prototype.deQueue = () => {
        return this.items.shift()
    }
    //返回队列中第一个元素,不做任何修改
    Queue.prototype.front = () => {
        return this.items[0]
    }
    //返回队列最后一个元素,不做任何修改
    Queue.prototype.end = () => {
        return this.items[this.items.length - 1]
    }
    //队列是否为空
    Queue.prototype.isEmpty = () => {
        return this.items.length == 0
    }
    // 队列包含的元素个数
    Queue.prototype.size = () => {
        return this.items.length
    }
    // toString
    Queue.prototype.toString = () => {
        var resultStr = ''
        for (var a = 0; a < this.items.length; a++) {
            resultStr += this.items[a] + ' '
        }
        return resultStr
    }

}

//击鼓传花修改版,N个参与者围成一圈进行有些弱智的数数 ,等于传入数的那个人淘汰
//游戏继续 , 给出最后的胜利者以及它在参与时的位置

function ccc(nameList, delNumber) {
    var queue = new Queue()

    //将参与者添加到队列中
    for (var a = 0; a < nameList.length; a++) {
        queue.enQueue(nameList[a])
    }
    //队列剩余一个参与者时停止
    while (queue.size() > 1) {
        //数数
        for (var b = 0; b < delNumber - 1; b++) {
            //把数到不等于淘汰number的人放到队列的后面
            queue.enQueue(queue.deQueue())
        }
        //把等于淘汰number的人移出队列
        queue.deQueue()
    }
    //打印队列中剩下的参与者
    console.log('获胜者是:'+queue.front());
    //打印参与者在游戏中原来的位置
    console.log('参与时的位置:' + Number(nameList.indexOf(queue.front())+1));
    
}
var name = ['小明','小花','小磊','小红','小刚','小李','小青']
ccc(name,108)```
获胜者是:小青
参与时的位置:7

你可能感兴趣的:(JS数据结构与算法之队列(基于数组))