Khái quát về hàng đợi¶
Khái niệm¶
Hàng đợi là cấu trúc dữ liệu phổ biến trong lập trình, được sử dụng để quản lý các phần tử theo thứ tự "vào trước, ra trước" (FIFO - First In, First Out).
Nói cách khác, trong hàng đợi, phần tử đầu tiên được thêm vào sẽ là phần tử đầu tiên được xóa khỏi hàng đợi.
Hình dưới đây minh hoạ hàng đợi gồm 5 phần tử. Mỗi phần tử chứa dữ liệu là một chuỗi.
graph LR
F[front]
subgraph queue
direction LR
A['Bernard Arnault']:::element --> B['Elon Musk']:::element
B:::element --> C['Jeff Bezos']:::element
C:::element --> D['Mark Zuckerberg']:::element
D:::element --> E['Larry Ellison']:::element
end
R[rear]
F --> A
E --> R
style F fill:#0cc167,stroke:none,rx:30px;
style R fill:#f96,stroke:none,rx:30px;
classDef element fill:#72bcd4,color:#434343,stroke:none,rx:20px
style queue fill:#e0f7fa,stroke:#00796b,stroke-width:1px,rx:20px;
Ứng dụng¶
Một số ứng dụng của hàng đợi là:
- Xử lý hàng đợi công việc
- Quản lý tài nguyên
- Xử lý sự kiện trong các hệ thống phần mềm
Những thao tác trên hàng đợi¶
Các thao tác cơ bản trên hàng đợi bao gồm:
- Thêm phần tử vào cuối hàng đợi
- Xóa phần tử ở đầu hàng đợi.
và một số thao tác khác.
Biểu diễn hàng đợi¶
Hàng đợi có thể được biểu diễn bằng các cấu trúc dữ liệu khác nhau như mảng, danh sách liên kết hoặc các cấu trúc dữ liệu phức tạp hơn tùy thuộc vào yêu cầu cụ thể.
Trong Python, hàng đợi có thể được triển khai bằng kiểu dữ liệu list
hoặc module có sẵn là queue
. Module queue
gồm có các lớp:
Queue
: hàng đợi vào trước, ra trước (FIFO).LifoQueue
: hàng đợi vào sau, ra trước (LIFO), hoạt động giống như một ngăn xếp.PriorityQueue
: hàng đợi mà trong đó các phần tử được truy xuất dựa trên độ ưu tiên, phần tử có độ ưu tiên thấp hơn sẽ được ra trước.
Bài học này chỉ đề cập đến Queue
.
Khai báo module¶
Khai báo module queue
, là module có sẵn của Python, không cần cài đặt gì thêm.
Khởi tạo hàng đợi¶
In hàng đợi¶
Mặc dù module queue
không có hàm nào in tất cả phần tử của hàng đợi, ta có thể chuyển đổi hàng đợi thành danh sách, rồi dùng hàm print()
để in danh sách.
Output:
Thêm phần tử¶
Để thêm phần tử vào cuối hàng đợi, ta dùng hàm put()
.
Output:
Hàng đợi sau khi thêm phần tử: ['Bernard Arnault', 'Elon Musk', 'Jeff Bezos', 'Mark Zuckerberg', 'Larry Ellison']
Lấy ra phần tử đầu¶
Để lấy ra phần tử nằm ở đầu hàng đợi, ta dùng hàm get()
.
Hàm get()
vừa lấy giá trị của phần tử đầu, vừa xoá phần tử này khỏi hàng đợi.
Output:
Lấy ra phần tử đầu: Bernard Arnault
Lấy ra phần tử đầu: Elon Musk
Lấy ra phần tử đầu: Jeff Bezos
Hàng đợi còn lại: ['Mark Zuckerberg', 'Larry Ellison']
Mã nguồn¶
- Chương trình Python hoàn chỉnh đặt tại Google Colab.
Some English words¶
Vietnamese | Tiếng Anh |
---|---|
hàng đợi | queue |
phần tử đầu | front (element) |
phần tử cuối | rear (element) |
thêm phần tử vào cuối hàng đợi | enqueue |
vào trước, ra trước | FIFO - First In, First Out |
xóa phần tử ở đầu hàng đợi | dequeue |