Toán tin vuotlen.com

Hàng đợi (Queue) trong C++

Queue là một cấu trúc dữ liệu trong C++ tuân theo nguyên tắc FIFO (First In, First Out), nghĩa là phần tử được thêm vào đầu tiên sẽ được lấy ra đầu tiên. C++ cung cấp thư viện chuẩn STL (Standard Template Library) hỗ trợ việc sử dụng queue thông qua lớp queue.

Các lệnh cơ bản trong Queue:

Ví dụ minh họa code Queue trong C++:

#include <iostream>
#include <queue>

using namespace std;

int main() {
    // Khai báo queue chứa các số nguyên
    queue<int> myQueue;

    // Thêm các phần tử vào queue
    myQueue.push(10);  // [10]
    myQueue.push(20);  // [10, 20]
    myQueue.push(30);  // [10, 20, 30]

    // In ra kích thước của queue: 3
    cout << "Size of queue: " << myQueue.size() << endl;

    // Truy cập phần tử ở đầu của queue: 10
    cout << "Front element: " << myQueue.front() << endl;

    // Truy cập phần tử ở cuối của queue: 30
    cout << "Back element: " << myQueue.back() << endl;

    // Loại bỏ phần tử ở đầu của queue
    myQueue.pop();     // [20, 30]

    // Truy cập phần tử ở đầu của queue sau khi pop: 20
    cout << "Front element after pop: " << myQueue.front() << endl;

    // Kiểm tra queue có rỗng không
    if (myQueue.empty()) {
        cout << "Queue is empty." << endl;
    } else {
        cout << "Queue is not empty." << endl;
    }

    // Khai báo hai queue chứa các số nguyên
    queue<int> queue1;
    queue<int> queue2;

    // Thêm các phần tử vào queue1
    queue1.push(10);
    queue1.push(20);
    queue1.push(30);

    // Thêm các phần tử vào queue2
    queue2.push(100);
    queue2.push(200);

    // Trước khi hoán đổi
    cout << "Queue1 front before swap: " << queue1.front() << endl; // Output: 10
    cout << "Queue2 front before swap: " << queue2.front() << endl; // Output: 100

    // Hoán đổi nội dung của queue1 và queue2
    queue1.swap(queue2);

    // Sau khi hoán đổi
    cout << "Queue1 front after swap: " << queue1.front() << endl; // Output: 100
    cout << "Queue2 front after swap: " << queue2.front() << endl; // Output: 10

    return 0;
}