什么是队列
队列抽象数据类型由以下结构和操作定义:队列被构造为在队尾添加项的有序集合,并且从队首移除。队列保持 FIFO 排序属性。 队列操作如下:
方法 | 描述 |
---|---|
Queue() | 创建一个空的新队列。 它不需要参数,并返回一个空队列。 |
enqueue(item) | 将新项添加到队尾。 它需要 item 作为参数,并不返回任何内容。 |
dequeue() | 从队首移除项。它不需要参数并返回 item。 队列被修改。 |
isEmpty() | 查看队列是否为空。它不需要参数,并返回布尔值。 |
size() | 返回队列中的项数。它不需要参数,并返回一个整数。 |
数据结构中的队列性质正好对应于现实生活中排队 (真实队列) 的情况。比如车站检票,最先去排队 (入列) 的人最先检票通过 (出列),即遵循 “先进后出” 的原则。
在Python中,可以用列表 (List) 实现一个队列:
class Queue:
def __init__(self):
self.items = []
def isEmpty(self):
return self.items == []
def size(self):
return len(self.items)
def enqueue(self,item):
self.items.insert(0, item) # 列表第一项为队列尾部
def dequeue(self):
return self.items.pop() # 列表最后一项为队列头部
队列的简单应用
队列这种数据结构有什么用?来看两个例子。
第一个例子是报数游戏。游戏规则如下:n个小朋友围成一圈报数,从某一个小朋友开始报1,然后按顺时针报数依次增加1,报到数m的小朋友自动出列