#
Hàng đợi (Queue)
#
Định nghĩa
Queue (hàng đợi) là một CTDL lưu trữ các phần tử gồm 2 thao tác chính:
- Push: Thêm một phần tử vào cuối danh sách, và
- Pop: Loại bỏ phần tử ở đầu danh sách
Ta hiểu về queue giống như một queue (hàng đợi) ở ngoài đời vậy: Người đầu tiên xếp vào hàng sẽ là người đầu tiên ra khỏi hàng đợi, người thứ hai vào hàng sẽ là người thứ hai ra khỏi đó, v.v. Vì tích chất này, queue còn được gọi là danh sách First In, First out - FIFO (Vào trước, ra trước).
#
Queue trong thư viện chuẩn
Ta có thể sử dụng queue trong C++ bằng cách khai báo thư viện <queue>
.
Khai báo queue:
queue<kiểu_dữ_liệu> Tên_queue;
Các phương thức phổ biến của queue:
push(x)
: Thêm phần tử x vào queuepop()
: Loại bỏ một phần tử ở đầu queuefront()
: Trả về giá trị của phần tử ở đầu queueback()
: Trả về giá trị của phần tử ở cuối queueempty()
: Trả về giá trị đúng nếu queue không có phần tử và ngược lạisize()
: Trả về số phần tử trong queue
Các thao tác đều có độ phức tạp O(1).
#include <bits/stdc++.h>
#define ll long long
using namespace std;
int main () {
ios_base::sync_with_stdio(0);
cin.tie(0);
queue<int> q;
st.push(1);
st.push(10);
st.push(5);
st.push(3);
cout << st.front() << '\n'; // 1
cout << st.back() << '\n'; // 3
st.pop();
cout << st.front() << '\n'; // 10
cout << st.size() << '\n'; // 3
cout << st.empty() << '\n'; // 0
return 0;
}
#
Ứng dụng
Một trong những thuật toán sử dụng hàng đợi là thuật toán BFS.