Queue trong C/C++ là gì? Các thao tác trên Queue trong C/C++ thường dùng Update 05/2024

Queue hay còn gọi là hàng đợi là một cấu trúc giải thuật thường gặp trong lập trình. Cùng tìm hiểu xem cấu trúc này là gì và ứng dụng của nó trong lập trình cũng như trong cuộc sống nhé!

Queue là gì? Các thao tác trên Queue thường dùng

Queue là gì? Các thao tác trên Queue thường dùng

I. Cấu trúc dữ liệu hàng đợi (Queue) là gì?

Queue (hàng đợi) là một vật chứa các đối tượng làm việc. Queue luôn mở ở cả hai đầu. Một đầu dùng để thêm một đối tượng vào hàng, đầu kia dùng để lấy một đối tượng ra khỏi hàng. Việc thêm hoặc bớt đối tượng tuân thủ theo nguyên tắc FIFO (First In First Out – vào trước xếp trước), nghĩa là đối tượng nào được thêm vào đầu tiên sẽ được truy xuất đầu tiên.

Queue hoạt động theo nguyên tắc FIFO

Queue hoạt động theo nguyên tắc FIFO

Trong thực tế, hàng đợi không hề xa lạ mà luôn hiện diện xung quanh chúng ta. Ví dụ phổ biến nhất về hàng đợi là xếp hàng cho các mục đích khác nhau (xếp hàng qua cổng soát vé, xếp hàng mua vé xem phim,….), trong đó đối tượng nào xếp hàng trước sẽ được phục vụ trước và thoát ra khỏi hàng trước.

Ví dụ về hàng đợi

Ví dụ về hàng đợi

II. Các hàm và thao tác cơ bản của Queue

1. Khai báo thư viện Queue

    #include

    #include

2. Khai báo biến

  • queue[…]: hàng đợi, là mảng một chiều chứa các biến đợi.
  • rear: chỉ số phần tử ở cuối hàng đợi queue. Khởi tạo rear = -1.
  • front: chỉ số phần tử ở đầu hàng đợi queue. Khởi tạo front = 0.
  • count: đếm số lượng phần tử trong hàng đợi queue. Khởi tạo count = 0.

3. Thao tác Peek()

Thap tác peek

Thap tác peek

Code minh họa:

kiểu dữ liệu peak()

{

     return queue[front];

{

4. Phương thức IsFull()

Phương thức IsFull

Phương thức IsFull

Code minh họa:

bool isFull()

{

    if (count == max)

        return true;

    return false;

}

5. Phương thức IsEmpty()

Phương thức IsEmpty

Phương thức IsEmpty

Code minh họa:

bool isEmpty()

{

    if (count == max)

        return true;

    return false;

}

III. Các giải thuật hàng đợi queue

1. Giải thuật Enqueue

Giải thuật Enqueue

Giải thuật Enqueue

Code minh họa:

void enqueue(int data)

{

    if(!isFull())

    {

        rear++;

        count ++;

        queue[rear] = data;

    }

    else cout << Queue is full";

}

2. Giải thuật Dequeue

Giải thuật Dequeue

Giải thuật Dequeue

Code minh họa:

void dequeue()

{

    if(!isEmpty())

    {

        count--;

        front++;

    }

    else

         cout << "Queue is empty";}

IV. Một số ứng dụng của hàng đợi Queue

Trong in ấn, các tài nguyên khi in ấn sẽ được lưu trữ trong một bộ nhớ đệm sau đó được đẩy ra bộ đệm riêng của máy in. Cơ chế này cho phép đặt nhiều lệnh in vào hàng đợi. Nhờ cơ chế này mà người dùng không phải chờ kết thúc từng lệnh để bắt đầu lệnh tiếp theo.

Ứng dụng của queue trong in ấn

Ứng dụng của queue trong in ấn

Giải thuật tìm kiếm theo chiều rộng (Breadth-First search) là thuật toán xét duyệt, tìm kiếm trên cây hoặc đồ thị theo chiều rộng. Giải thuật này sử dụng hàng đợi queue để ghi nhớ đỉnh liền kề để bắt đầu việc tìm kiếm khi không gặp được đỉnh liền kề trong bất kỳ vòng lặp nào.

Ứng dụng của queue vào giải thuật Breadth-First search

Ứng dụng của queue vào giải thuật Breadth-First search

Trên đây là toàn bộ kiến thức cơ bản về Queue trong C/C++ và các thao tác cơ bản thường dùng. Hi vọng bạn đã có những kiến thức cơ bản về Queue và có thể thực hành về Queue qua một vài ví dụ cụ thể. Cảm ơn các bạn đã theo dõi bài viết này!

Nguồn tham khảo: Wikipedia, Lập Trình Không Khó, Viettuts