击鼓传花游戏
原游戏规则:
班级中玩一个游戏,所有学生围成一圈,从某位同学手里开始向旁边的同学传一束花。
这个时候某个人(比如班长),在击鼓,鼓声停下的一刻,花落在谁手里,谁就出来表演节目
一般在编程中就会把游戏规则修改一点
修改后的游戏规则:
几个朋友一起玩一个游戏,围成一圈,开始数数,数到某个数字的人自动淘汰。
最后剩下的这个人会获得胜利,请问最后剩下的是原来在哪一个位置上的人?
要想用JavaScript实现这个游戏,可以使用队列的知识
队列的定义
队列(Queue)是只允许在一端进行插入操作,而另一端进行删除操作的线性表
队列是一种先进先出(First In First Out)的线性表,简称FIFO。允许插入的一段称为队尾,允许删除的一端称为队头。
假设队列是 q=(a1,a2,a3....,an)
,那么 a1 就是队头元素,而 an 就是队尾元素。这样我们删除时,总是从 a1 开始;而插入时,在最后。
这也符合我们通常在生活中高的习惯,排在第一个的优先处理,最后来的当然在队伍的最后了。
上图战士了队列的两个操作,入队和出队。除此之外我们还需要别的数据,比如队列里是否有元素,队列的长度等等
定义队列的方法:
- enqueue() 入队
- dequeue() 出队
- front() 查看队头元素
- toString() 返回队列中所有的元素
- length() 返回队列的长度
队列的实现
function Queue() {
this.items = []
// 将元素加入到队列中
Queue.prototype.enqueue = function(element) {
this.items.push(element)
}
// 从队列中删除最前端的元素
Queue.prototype.