美文网首页
JS数据结构与算法之队列(基于数组)

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

作者: 要此 | 来源:发表于2020-06-07 23:10 被阅读0次
    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数据结构与算法之队列(基于数组)

          本文链接:https://www.haomeiwen.com/subject/dbqktktx.html