数据结构与算法之队列Queue
线性数据结构(linear data structure)第二讲队列(queue)
队列的添加和移除原则为:先入先出(first-in first out, FIFO)。生活中排队就是队列。
今晚我们看完球在簋街附近打车,前面有100多位在等,这就是一个队列。问:这里的first-in一定会first-out么?如果把first-out定义成被服务,那是的,先叫车先打到车;如果把first-out定义为移出队列,那就不是,用户取消了也会被移出队列。
队列的操作:
Queue()
创建一个新队列,返回空的队列。enqueue(item)
在队列尾部增加一个元素,返回None。dequeue()
从队列头部移除一个元素,返回移除的元素。peek()
返回队列中下一个被移除的元素。is_empty()
返回队列是否为空,True或者False。size()
返回队列中元素个数。
队列的实现:
class Queue:
def __init__(self):
self.items = []
def enqueue(self, item):
self.items.insert(0, item)
def dequeue(self):
return self.items.pop()
def peek(self):
return self.items[-1]
def is_empty(self):
return self.items == []
def size(self):
return len(self.items)
队列的优点:
- 操作很快。
队列的用处:
- 广度优先搜索:用队列记录将要被访问的节点,先加入,先被查看
- 处理器:CPU中的scheduler中等待被执行的队列
- 循环播放列表
判断是否需要用队列:考虑场景中有没有依次、FIFO、循环的需求。 - myself
参考资料: