js队列的封装,约瑟夫环游戏
class Queue {
constructor() {
this.items = []
}
//入列
enqueue(data) {
this.items.push(data)
}
//出列
dequeue() {
return this.items.shift()
}
front() {
return this.items[0]
}
isEmpty() {
return this.items.length === 0
}
size() {
return this.items.length
}
clear() {
this.items = []
}
toString() {
return this.items.join()
}
}
function game(list, num) {
let queue = new Queue()
for (let i = 0; i < list.length; i++) {
queue.enqueue(list[i])
}
while (queue.size() > 1) {
for (let i = 0; i < num; i++) {
queue.enqueue(queue.dequeue())
}
console.log(queue.dequeue(), "out!");
}
return queue.dequeue()
}