JavaScript 循环队列

简介: JavaScript 循环队列

循环队列,听名字就知道意思了,而实现的时候并不是真正将头和尾相连接,而是通过删除队首,再将删除的元素放在队尾实现。

这里的击鼓串花:每次循环删除掉一个元素,最终留下的为胜利者。
相关文章

JavaScript 数组 JavaScript 队列 JavaScript 优先队列




function Queue(){//定义队列对象
    var items = [];//队列的承载
    //向队列尾部添加一个或多个新的项
    this.enqueue = function(el){
        items.push(el)
    }
    //删除队列头部第一个元素
    this.dequeue = function(){
        return items.shift();
    }
    //返回队列中第一个元素
    this.front = function(){
        return items[0];
    }
    //确定元素是否为空 为空则为true 不为空则为false
    this.isEmpty = function(){
        return items.length === 0;
    }
    //返回队列长度
    this.size = function(){
        return items.length;
    }
    //打印队列
    this.print = function(){
        console.log(items.toString())
    }
}
function hotPotato (nameList, num){
    var queue = new Queue();
    for(var i = 0;i<nameList.length;i++){
        queue.enqueue(nameList[i]);
        //把名单全部加入到队列
    }
    var eliminated = '';
    while (queue.size()>1){
        //第一次队列:[John,JAck,Camila,Ingrid,Carl]
        //第二次队列:[ingrid,carl,john,jack]
        //第三次队列:[ingrid,carl,john]
        //第四次队列:[john,ingrid]
        for(var i = 0;i<num;i++){
            queue.enqueue(queue.dequeue());
            //删除队首元素->返回被删除的元素->放到队尾
            //这一步就实现了循环队列的实质
        }
        //for循环之后的队列
        //第一次:[amila,ingrid,carl,john,Jack]
        //第二次:[jack,ingrid,carl,john]
        //第三次:[carl,john,ingrid]
        //第四次:[ingrid,john]

        //接下来进行的就是击鼓传花了
        eliminated = queue.dequeue();
        //删除队首,击鼓传花中,被淘汰掉了
        //每次淘汰一个:淘汰顺序:
        //camila->jack->carl->ingrid
        console.log(eliminated + '在击鼓传花游戏中被淘汰');
    }
    return queue.dequeue();
    //胜出者 --》john
}
var names = ['John','JAck','Camila','Ingrid','Carl'];
var winner = hotPotato(names,7);
//这里的击鼓串花的间隔是相同的,可以根据实际项目需求,在hotPotato()中定义相应方法去生成

console.log('胜利者:'+ winner);


相关文章

JavaScript 数组
JavaScript 队列
JavaScript 优先队列


我的微信公众平台 不喜勿喷55.gif55.gif

6efab1869072f77cc579de71871a9af95bee2342

目录
相关文章
|
24天前
|
JavaScript 前端开发 安全
JavaScript中的循环控制:while、do-while与for详解
【4月更文挑战第7天】本文探讨JavaScript的三种主要循环结构:while、do-while和for。while循环在满足条件时执行代码块,注意避免无限循环;do-while循环至少执行一次,适合先执行后判断的场景;for循环结合初始化、条件和迭代,适合遍历。理解每种循环的特点和适用场景,结合编程技巧,如使用break和continue,选择合适的循环方式,能提升代码效率和可读性。记得关注循环性能和避免不必要的计算。
18 0
|
1月前
|
JavaScript
在循环内错误使用函数定义(js的问题)
在循环内错误使用函数定义(js的问题)
11 0
|
1月前
|
JavaScript
JS使用循环求100内奇数之和
JS使用循环求100内奇数之和
16 1
|
1月前
|
JavaScript 前端开发
JS——while 循环和 do while 循环:究竟有什么区别?
JS——while 循环和 do while 循环:究竟有什么区别?
18 1
|
4月前
|
JavaScript 前端开发
【面试题】在JS循环中使用await会怎么样?
【面试题】在JS循环中使用await会怎么样?
|
5月前
|
JavaScript 前端开发 开发者
从0开始学习JavaScript--JavaScript 循环与迭代详解
JavaScript中的循环和迭代是编写高效和灵活代码的关键。循环用于重复执行一段代码,而迭代则用于遍历数据结构。本文将深入研究JavaScript中常见的循环结构和迭代方法,并通过丰富的示例代码来帮助读者更好地理解和运用这些概念。
|
5天前
|
JavaScript 前端开发
JavaScript 条件循环语句(for 循环)
JavaScript 条件循环语句(for 循环)
|
8天前
|
前端开发 JavaScript 开发者
遍历指南:JavaScript 中的 for、for-in、for-of 和 forEach 循环详解
遍历指南:JavaScript 中的 for、for-in、for-of 和 forEach 循环详解
18 3
|
12天前
|
JavaScript 索引
JS 几种循环遍历
JS 几种循环遍历
9 0
JS 几种循环遍历
|
17天前
|
JavaScript 前端开发
js中的while循环和do while循环的区别
js中的while循环和do while循环的区别
19 8