隊列(queue)
隊列是先進先出(FIFO, First-In-First-Out)的線性表,在具體應用中通常用鏈表或者數組來實現,隊列只允許在后端(稱為rear)進行插入操作,在前端(稱為front)進行刪除操作,隊列的操作方式和堆棧類似,唯一的區別在于隊列只允許新數據在后端進行添加(摘錄維基百科)。
如圖所示
隊列的接口
一個隊列至少需要如下接口:
接口 | 描述 |
---|---|
add(x) | 入隊 |
delete() | 出隊 |
clear() | 清空隊列 |
isEmpty() | 判斷隊列是否為空 |
isFull() | 判斷隊列是否未滿 |
length() | 隊列的當前長度 |
capability() | 隊列的容量 |
然而在Python中,可以使用collections模塊下的deque函數,deque函數提供了隊列所有的接口,那么先讓我門看看隊列deque函數提供了那些API把:
collections.deque
是雙端隊列,即左右兩邊都是可進可出的
方法 | 描述 |
---|---|
append(x) | 在隊列的右邊添加一個元素 |
appendleft(x) | 在隊列的左邊添加一個元素 |
clear() | 從隊列中刪除所有元素 |
copy() | 返回一個淺拷貝的副本 |
count(value) | 返回值在隊列中出現的次數 |
extend([x..]) | 使用可迭代的元素擴展隊列的右側 |
extendleft([x..]) | 使用可迭代的元素擴展隊列的右側 |
index(value, [start, [stop]]) | 返回值的第一個索引,如果值不存在,則引發ValueError。 |
insert(index, object) | 在索引之前插入對象 |
maxlen | 獲取隊列的最大長度 |
pop() | 刪除并返回最右側的元素 |
popleft() | 刪除并返回最左側的元素 |
remove(value) | 刪除查找到的第一個值 |
reverse() | 隊列中的所有元素進行翻轉 |
rotate() | 向右旋轉隊列n步(默認n = 1),如果n為負,向左旋轉。 |
新聞熱點
疑難解答