千家信息网

js循环队列怎么用

发表于:2025-01-19 作者:千家信息网编辑
千家信息网最后更新 2025年01月19日,这篇文章主要为大家展示了"js循环队列怎么用",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"js循环队列怎么用"这篇文章吧。1、可以使用循环队列来模拟击鼓传
千家信息网最后更新 2025年01月19日js循环队列怎么用

这篇文章主要为大家展示了"js循环队列怎么用",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"js循环队列怎么用"这篇文章吧。

1、可以使用循环队列来模拟击鼓传花的游戏(约瑟夫环问题)。

2、一群孩子围成一圈,每次传递n个数,停下来时手里拿花的孩子被淘汰,直到队伍中只剩下一个孩子,即胜利者。

循环队列,每次循环的时候(从队列头部)弹出一个孩子,再把这个孩子加入到队列的尾部,循环 n 次,循环停止时弹出队列头部的孩子(被淘汰),直到队列中只剩下一个孩子。

实例

function Queue() {  //初始化队列(使用数组实现)  var items = [];  //入队  this.enqueue = function (ele) {    items.push(ele);  };   //出队  this.dequeue = function () {    return items.shift();  };  //返回首元素  this.front = function () {    return items[0];  };  //队列是否为空  this.isEmpty = function () {    return items.length == 0;  };  //清空队列  this.clear = function () {   items = [];  };  //返回队列长度  this.size = function () {    return items.length;  };  //查看列队  this.show = function () {    return items;  };}/** ** @param {名单} names * @param {指定传递次数} num */function onlyOne(names, num) {  var queue = new Queue();  //所有名单入队  names.forEach((name) => {    queue.enqueue(name);  });  //淘汰的人名  var loser = "";  //只要还有一个以上的人在,就一直持续  while (queue.size() > 1) {    for (let i = 0; i < num; i++) {     //把每次出队的人,再次入队 ,这样一共循环了num 次(击鼓传花一共传了num次)      queue.enqueue(queue.dequeue());    }    //到这就次数就用完了,下一个就要出队了    loser = queue.dequeue();    console.log(loser + "被淘汰了");  }  //到这就剩下一个人了  return queue.dequeue();}var names = ["文科", "张凡", "覃军", "邱秋", "黄景"];var winner = onlyOne(names, 99);console.log("金马奖影帝最终获得者是:" + winner);

以上是"js循环队列怎么用"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

0