参考文章:https://www.cnblogs.com/xiaohuochai/p/8174854.html
循环队列-击鼓传花游戏
还有另一个修改版的队列实现,就是循环队列。循环队列的一个例子就是击鼓传花游戏(Hot Potato)。在这个游戏中,孩子们围成一个圆圈,把花尽快地传递给旁边的人。某一时刻传花停止, 这个时候花在谁手里,谁就退出圆圈结束游戏。重复这个过程,直到只剩一个孩子(胜者)。
//enqueue(element(s)):向队列尾部添加一个(或多个)新的项。
//dequeue():移除队列的第一(即排在队列最前面的)项,并返回被移除的元素。
function hotPotato(nameList,num){
//新建一个队列
var queue = new Queue(); // {1}
for(let item of nameList){
queue.enqueue(item); // {2}
}
var eliminated = '';
while(queue.size>1){
for (var i=0; i<num; i++){
//从队列开头移除一项,再将其添加到队列末尾(这样就让一个普通的队列变成了循环队列)
//我们并不是真的创建一个循环的队列,而是将普通的队列赋予操作【不断更换开头和结尾】,让她有类似循环队列的操作
queue.enqueue(queue.dequeue()); // {3}
}
elimina