“”"
隊列(Queue)和雙端隊列(Deque, Double-ended Queue)都是線性數據結構,但它們在操作上有所不同:
隊列(Queue):
隊列遵循先進先出(FIFO, First-In-First-Out)原則。
元素只能從隊尾添加(enqueue),并從隊頭移除(dequeue)。
標準的隊列不允許直接訪問或修改隊列中間的元素。
Python標準庫中的queue模塊提供了不同類型的隊列實現,如Queue、LifoQueue(后進先出)、PriorityQueue(優先級隊列)等。
雙端隊列(Deque):
雙端隊列在兩端都可以進行添加和移除操作,即允許從隊頭添加(enqueue)和移除(dequeue),同時也允許從隊尾添加(append)和移除(pop)。
它可以當作普通隊列使用,也可以當作棧(Stack)來用,因為棧是后進先出(LIFO)的數據結構,而雙端隊列的右端添加和移除功能恰好符合這一特性。
雙端隊列還可以進行任意位置的元素插入和刪除(如果支持的話),這使得它比標準隊列更加靈活。
“”"
Queue
import queue
from collections import dequeq = queue.Queue()q.put('item1')
q.put('item2')item = q.get()
print(item)item = q.get()
print(item)if q.empty():print("Queue is empty")print('*'*50)q2 = deque()
q2.append('data1')
q2.append('data2')
q2.appendleft('space1')
q2.appendleft('space2')print(q2) # deque(['space2', 'space1', 'data1', 'data2'])
d1 = q2.pop()
d2 = q2.popleft()
d3 = q2.pop()
d4 = q2.popleft()print(d1)
print(d2)
print(d3)
print(d4)if not q2:print('deque is empty!')