Skip to Content
🧮 CTDL & Giải thuật🚶 Hàng đợi (Queue)

Hàng đợi (Queue)

Queue là gì?

Queue là cấu trúc dữ liệu hoạt động theo nguyên tắc FIFO (First In, First Out) - phần tử vào trước sẽ được lấy ra trước.

Enqueue Dequeue │ │ ▼ ▼ ┌─────┬─────┬─────┬─────┬─────┐ │ 50 │ 40 │ 30 │ 20 │ 10 │ ───▶ Ra └─────┴─────┴─────┴─────┴─────┘ Back Front
💡

Queue giống như hàng đợi mua vé - ai đến trước được phục vụ trước!

Các thao tác cơ bản

Thao tácMô tảĐộ phức tạp
enqueue(x)Thêm x vào cuốiO(1)
dequeue()Lấy phần tử ở đầuO(1)
front()/peek()Xem phần tử đầuO(1)
isEmpty()Kiểm tra queue rỗngO(1)

Sử dụng Queue

from collections import deque queue = deque() queue.append(10) # enqueue queue.append(20) queue.append(30) print(queue[0]) # front: 10 print(queue.popleft()) # dequeue: 10 print(len(queue)) # size: 2
⚠️

Python: Không nên dùng list.pop(0) vì có độ phức tạp O(n). Dùng deque.popleft() thay thế!

BFS với Queue

from collections import deque def bfs(graph, start): visited = set([start]) queue = deque([start]) result = [] while queue: node = queue.popleft() result.append(node) for neighbor in graph[node]: if neighbor not in visited: visited.add(neighbor) queue.append(neighbor) return result

So sánh Stack vs Queue

StackQueue
Nguyên tắcLIFOFIFO
Thêmpush (đỉnh)enqueue (cuối)
Lấypop (đỉnh)dequeue (đầu)
Duyệt đồ thịDFSBFS

Tiếp theo: Bảng băm (Hash Table)

Last updated on