009 队列(queue)

队列

队列(queue)是一种先进先出(first-in, first-out)(FIFO)的数据结构。

允许添加元素的一端为队尾(rear),允许删除元素的一端为队头(front)。

队列的空间复杂度为O(n)。

队列操作及时间复杂度

操作 含义 时间复杂度
enqueue 入队 O(1)
dequeue 出队 O(1)
peek 查看队头 O(1)
is_empty 判空 O(1)

队列的所有操作均可以在常数时间(O(1))完成。

使用deque

Python在collections模块里有一个用作双向队列的数据结构deque。用它来实现所有的队列操作。

判空操作,同样的,可以len,也可以try-except,我更推荐try-except。

from collections import deque  
  
q = deque()  
  
# enqueue  
q.append(1)  
q.append(2)  
  
# dequeue  
front = q.popleft()  
  
# peek  
front_item = q[0]  
  
# is_empty  
is_empty = len(q) == 0

同样的,也可以封装一下

from collections import deque  
  
  
class Queue:  
    def __init__(self):  
        self._data = deque()  
  
    def enqueue(self, item):  
        self._data.append(item)  
  
    def dequeue(self):  
        return self._data.popleft()  
  
    def peek(self):  
        return self._data[0]  
  
    def is_empty(self):  
        try:  
            self._data.popleft()  
        except IndexError:  
            return True  
        else:  
            return False
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容