队列

54 阅读2分钟

队列(Queue)

队列它是一种受限的线性表,先进先出(FIFO First In First Out)受限之处在于它只允许在表的前端( front)进行删除操作0而在表的后端( rear)进行插入操作生活中类似的队列结构

image.png

队列有哪些常见的操作呢?

1: enqueue(element) : 向队列尾部添加一个( 或多个 )新的项

2: dequeue0 : 移除队列的第一( 即排在队列最前面的 )项,并返回被移除的元素

3: front0: 返回队列中第一个元素一一最先被添加,也将是最先被除的元素。队列不做任何变动( 不移除元素只返回元素信息一与Stack类的peek方法非常类似)。

4: isEmpty0 : 如果队列中不包含任何元素,返回true,否则返回false。

5: size0 : 返回队列包含的元素个数,与数组的length属性类似。

6: tostring0:将队列中的内容, 转成字符串形式

封装一个队列

a1f55966615c90562e00c2bbb49830d.png

image.png

击鼓传花例子

击鼓传花是一个常见的面试算法题.使用队列可以非常方便的实现最终的结果

原游戏规则:班级中玩一个游戏,所有学生围成一圈,从某位同学手里开始向旁边的同学传一束花口 这个时候某个人(比如班长),在击鼓,鼓声停下的一颗,花落在谁手里,谁就出来表演节目修改游戏规则:

口 我们来修改一下这个游戏规则

口 几个朋友一起玩一个游戏,围成一圈,开始数数,数到某个数字的人自动淘汰 最后剩下的这个人会获得胜利,请问最后剩下的是原来在哪一个位置上的人?封装一个基于队列的函数

参数: 所有参与人的姓名,基于的数字

结果: 最终剩下的一人的姓名

image.png