队列-击鼓传花
一群人数数,数到某个数字的人自动淘汰,最后剩下的人获得胜利
- 新建队列
- 将名字数组用for循环加入独立额
- 进行while循环,知道最后剩一个人
- 内部for循环将指定数字之前的人全部移到队列后面去
- 这时数到指定数字的人就到第一个了删除第一个
- 打印需要的数据
function passgame(namelist, num) {
var q1 = new Queue()
for (var i = 0; i < namelist.length; i++) {
q1.enqueue(namelist[i])
}
while (q1.size() > 1) {
for (var j = 0; j < num - 1; j++) {
q1.enqueue(q1.dequeue())
}
q1.dequeue()
}
console.log(q1.size())
console.log(q1.front());
console.log(namelist.indexOf(q1.front()));
}
var namelist = ['111', '222', '333', '444', '555', '666']
passgame(namelist, 3)
优先级队列
队列不只有元素数据还有其对应的优先级,优先级越小越优先 代码实现:
- 定义优先级队列的类
- 其中属性仍然使用数组来实现
- 优先级队列类中定义一个队列元素类,需要参数element和priority
- 用this.将element和priority保存起来