队列(Queue)
队列它是一种受限的线性表,先进先出(FIFO First In First Out)受限之处在于它只允许在表的前端( front)进行删除操作0而在表的后端( rear)进行插入操作生活中类似的队列结构
队列有哪些常见的操作呢?
1: enqueue(element) : 向队列尾部添加一个( 或多个 )新的项
2: dequeue0 : 移除队列的第一( 即排在队列最前面的 )项,并返回被移除的元素
3: front0: 返回队列中第一个元素一一最先被添加,也将是最先被除的元素。队列不做任何变动( 不移除元素只返回元素信息一与Stack类的peek方法非常类似)。
4: isEmpty0 : 如果队列中不包含任何元素,返回true,否则返回false。
5: size0 : 返回队列包含的元素个数,与数组的length属性类似。
6: tostring0:将队列中的内容, 转成字符串形式
封装一个队列
击鼓传花例子
击鼓传花是一个常见的面试算法题.使用队列可以非常方便的实现最终的结果
原游戏规则:班级中玩一个游戏,所有学生围成一圈,从某位同学手里开始向旁边的同学传一束花口 这个时候某个人(比如班长),在击鼓,鼓声停下的一颗,花落在谁手里,谁就出来表演节目修改游戏规则:
口 我们来修改一下这个游戏规则
口 几个朋友一起玩一个游戏,围成一圈,开始数数,数到某个数字的人自动淘汰 最后剩下的这个人会获得胜利,请问最后剩下的是原来在哪一个位置上的人?封装一个基于队列的函数
参数: 所有参与人的姓名,基于的数字
结果: 最终剩下的一人的姓名