JS数据结构之队列(Queue)
function passGame(nameList, number) {
const queue = new Queue();
// 先组成一个队列
for (let name of nameList) {
queue.enqueue(name);
}
console.log("原始数组:", queue.items); //['lily']
// 开始数数
while (queue.size() > 1) {
// 不是 number 时,重新加入到队尾
// 是 number 时,将其删除
for (let i = 0; i < number - 1; i++) {
// 即把队头删除的元素,重新加入到队尾中
queue.enqueue(queue.dequeue());
console.log("非number加入队尾", queue.items);
}
queue.dequeue()
console.log(`删除${number}后`, queue.items);
}
console.log("最终数组:", queue.items); //['lily']
// 获取最后剩下的那个人
const endName = queue.front();
return nameList.indexOf(endName);
}
// passGame() 测试
const names = ['lily', 'lucy', 'tom', 'tony', 'jack'];
const targetIndex = passGame(names, 4);
console.log('击鼓传花最终赢家是:', names[targetIndex]); //lily