Pertemuan 7 - Queue (Antrian)

 Pertemuan 7 - Queue (Antrian)

Queue adalah struktur data linear yang mengikuti prinsip FIFO (First In, First Out), yaitu elemen yang pertama dimasukkan adalah elemen pertama yang dikeluarkan.

b. Operasi Dasar pada Queue

  1. Enqueue: Menambahkan elemen ke belakang antrian.

  2. Dequeue: Menghapus elemen dari depan antrian.

  3. Front: Mengakses elemen pertama dalam antrian tanpa menghapusnya.

  4. isEmpty: Mengecek apakah antrian kosong.

c. Implementasi Queue dalam C++

Berikut adalah contoh implementasi queue menggunakan array:

#include <iostream>
using namespace std;

#define MAX 100

class Queue {
    int front, rear;
public:
    int arr[MAX];
    Queue() { front = rear = -1; }
    bool enqueue(int x);
    int dequeue();
    int getFront();
    bool isEmpty();
};

bool Queue::enqueue(int x) {
    if (rear >= MAX - 1) {
        cout << "Queue Overflow" << endl;
        return false;
    } else {
        if (front == -1) front = 0;
        arr[++rear] = x;
        return true;
    }
}

int Queue::dequeue() {
    if (front == -1 || front > rear) {
        cout << "Queue Underflow" << endl;
        return -1;
    } else {
        return arr[front++];
    }
}

int Queue::getFront() {
    if (front == -1 || front > rear) {
        cout << "Queue is Empty" << endl;
        return -1;
    } else {
        return arr[front];
    }
}

bool Queue::isEmpty() {
    return (front == -1 || front > rear);
}

int main() {
    Queue q;
    q.enqueue(10);
    q.enqueue(20);
    q.enqueue(30);
    cout << "Front element: " << q.getFront() << endl;
    cout << "Dequeued element: " << q.dequeue() << endl;
    cout << "Front element after dequeue: " << q.getFront() << endl;
    return 0;
}

5. Kelebihan dan Kekurangan Queue

Kelebihan:

  • Efektif untuk pemrosesan data dalam antrean, seperti sistem antrian pelanggan atau penjadwalan proses dalam sistem operasi.

  • Mudah diimplementasikan dalam berbagai bahasa pemrograman.

Kekurangan:

  • Terbatas dalam kapasitas jika menggunakan array (memerlukan pengelolaan ukuran jika menggunakan linked list).

  • Penghapusan elemen menyebabkan pergeseran posisi elemen lainnya jika tidak menggunakan circular queue.

6. Kesimpulan

Stack dan Queue adalah dua struktur data yang banyak digunakan dalam pemrograman. Stack mengikuti prinsip LIFO dan sering digunakan dalam undo/redo serta rekursi, sedangkan Queue mengikuti prinsip FIFO yang cocok untuk antrian proses dan penjadwalan. Implementasi dalam C++ dapat menggunakan array atau linked list, tergantung pada kebutuhan aplikasi.