QUEUE TIPE DATA DALAM PEMROGRAMAN KOMPTER

Apasih Queue?

Di dalam dunia komputer, Queue merujuk pada struktur data yang sangat penting. Dengan menggunakan queue, kita dapat mengatur urutan operasi yang dieksekusi secara efisien. Pada ringkasan ini, saya akan membahas pengertian queue, operasi dasar pada queue, implementasi dalam bahasa pemrograman, serta keuntungan dan kekurangannya.


Pengertian Queue

Queue (antrian) adalah struktur data yang mengatur elemen-elemen dalam urutan tertentu. Elemen yang masuk terlebih dahulu akan keluar terlebih dahulu (FIFO). Queue dapat ditemukan dalam berbagai aspek kehidupan kita, mulai dari penjualan tiket hingga antrian pesan masuk pada ponsel kita.

Operasi Dasar pada Queue

Operasi dasar pada antrian meliputi operasi enqueue (menambahkan elemen ke antrian), dequeue (mengeluarkan elemen dari antrian), dan peek (melihat elemen teratas pada antrian tanpa mengeluarkannya). untuk lebih jelasnya sebagai berikut.

1. Enqueue

"Enqueue" adalah operasi yang digunakan dalam struktur data queue untuk menambahkan elemen baru ke dalam antrian pada ujung belakang atau ujung terakhir. Dengan operasi ini, elemen baru yang dimasukkan menjadi elemen terakhir dalam antrian, sehingga mengikuti prinsip "First In, First Out" (FIFO). Artinya, elemen yang pertama kali dimasukkan ke dalam antrian adalah yang pertama pula akan dikeluarkan. Secara sederhana, "enqueue" adalah seperti menambahkan objek atau data baru ke dalam antrian yang sudah ada, sehingga data tersebut akan menunggu giliran untuk diproses atau diambil dari ujung depan antrian ketika tiba waktunya.

2. Dequeue

"Dequeue" adalah operasi yang digunakan dalam struktur data queue untuk menghapus atau mengambil elemen pertama dari antrian, yang berada di ujung depan antrian. Ini mengikuti prinsip "First In, First Out" (FIFO), yang berarti elemen yang pertama kali dimasukkan ke dalam antrian adalah yang pertama pula akan dikeluarkan. "dequeue" mirip dengan mengambil atau menghapus barang yang paling depan dari antrian. Ini seperti ketika orang pertama dalam antrian di toko mengambil pesanannya dari kasir.

3. Peek

"Peek" adalah operasi yang digunakan untuk melihat atau mengakses elemen pertama dalam antrian atau tumpukan tanpa menghapusnya. Ini berguna untuk memeriksa elemen yang berada di depan struktur data tanpa mengubah urutan atau isi sebenarnya. Dan "peek" bisa dibandingkan dengan sekilas melihat isi buku tanpa membacanya sepenuhnya, atau memeriksa isi laci tanpa mengeluarkan semua isinya. Anda hanya melihat apa yang ada di puncak atau di depan tanpa melakukan perubahan pada struktur data itu sendiri.

Implementasi Queue dalam Bahasa Pemrograman

Queue dapat diimplementasikan dalam bahasa pemrograman menggunakan struktur data seperti array atau linked list. Dalam implementasinya, kita membutuhkan suatu variabel yang menyimpan indeks elemen teratas dan elemen terbawah pada antrian. Hal ini memungkinkan kita untuk melakukan operasi enqueue dan dequeue dengan efektif


Contoh Implementasi Queue dalam Bahasa Java Menggunakan Array

public class QueueUsingArray {
    private int maxSize;
    private int[] queueArray;
    private int front; // Pointer untuk elemen depan antrian
    private int rear; // Pointer untuk elemen belakang antrian
    private int currentSize; // Jumlah elemen saat ini dalam antrian

    public QueueUsingArray(int size) {
        maxSize = size;
        queueArray = new int[maxSize];
        front = 0;
        rear = -1;
        currentSize = 0;
    }

    // Menambahkan elemen ke ujung belakang antrian
    public void enqueue(int item) {
        if (isFull()) {
            System.out.println("Antrian penuh. Tidak bisa menambahkan " + item);
        } else {
            rear = (rear + 1) % maxSize;
            queueArray[rear] = item;
            currentSize++;
        }
    }

    // Menghapus dan mengembalikan elemen dari depan antrian
    public int dequeue() {
        if (isEmpty()) {
            System.out.println("Antrian kosong.");
            return -1; // Nilai default jika antrian kosong
        } else {
            int item = queueArray[front];
            front = (front + 1) % maxSize;
            currentSize--;
            return item;
        }
    }

    // Melihat elemen di depan antrian tanpa menghapusnya
    public int peek() {
        if (isEmpty()) {
            System.out.println("Antrian kosong.");
            return -1; // Nilai default jika antrian kosong
        } else {
            return queueArray[front];
        }
    }

    // Memeriksa apakah antrian kosong
    public boolean isEmpty() {
        return currentSize == 0;
    }

    // Memeriksa apakah antrian penuh
    public boolean isFull() {
        return currentSize == maxSize;
    }

    public static void main(String[] args) {
        QueueUsingArray queue = new QueueUsingArray(5);

        queue.enqueue(10);
        queue.enqueue(20);
        queue.enqueue(30);

        System.out.println("Elemen di depan antrian: " + queue.peek());

        System.out.println("Elemen yang diambil dari antrian: " + queue.dequeue());
        System.out.println("Elemen yang diambil dari antrian: " + queue.dequeue());

        queue.enqueue(40);
        queue.enqueue(50);

        System.out.println("Antrian kosong? " + queue.isEmpty());
        System.out.println("Antrian penuh? " + queue.isFull());
    }
}
Dalam Contoh ini, saya mengimplementasikan queue menggunakan array dengan batasan ukuran, dan saya menggunakan operasi enqueue, dequeue, peek, isEmpty, dan isFull untuk mengelola antrian.

Contoh Penggunaan Queue dalam Bahasa Java Menggunakan Lingked List

import java.util.LinkedList;
import java.util.Queue;

public class QueueUsingLinkedList {
    public static void main(String[] args) {
        // Membuat objek queue menggunakan LinkedList
        Queue<Integer> queue = new LinkedList<>();

        // Menambahkan elemen ke dalam antrian
        queue.offer(10);
        queue.offer(20);
        queue.offer(30);

        // Melihat elemen di depan antrian tanpa menghapusnya
        System.out.println("Elemen di depan antrian: " + queue.peek());

        // Menghapus dan mengambil elemen dari depan antrian
        System.out.println("Elemen yang diambil dari antrian: " + queue.poll());
        System.out.println("Elemen yang diambil dari antrian: " + queue.poll());

        // Menambahkan lebih banyak elemen ke dalam antrian
        queue.offer(40);
        queue.offer(50);

        // Memeriksa apakah antrian kosong
        System.out.println("Antrian kosong? " + queue.isEmpty());

        // Melakukan iterasi untuk mengambil dan mencetak semua elemen dari antrian
        while (!queue.isEmpty()) {
            System.out.println("Elemen yang diambil dari antrian: " + queue.poll());
        }
    }
}
Dalam contoh ini, saya menggunakan kelas linked list untuk mengimplementasikan queue. saya menggunakan operasi offer untuk menambahkan elemen ke antrian, peek untuk melihat elemen di depan antrian tanpa harus menghapusnya, dan poll untuk menghapus dan mengambil elemen dari depan antrian. Dengan linked list, antran dapat dinamis memperluas ukurannya atanpa batas kuran yang tetap.

Contoh Penggunaan Antrian dalam Kehidupan Sehari-hari

  • Pengantri di sebuah restoran cepat saji
  • Proses penjemputan oleh taksi online
  • Sistem pemesanan tiket bioskop secara online
  • Antrian panggilan pada pusat layanan pelanggan

Perbedaan Queue FIFO dan Queue Prioritas

Antrian FIFO (First-In, First-Out) adalah jenis antrian di mana elemen yang pertama kali masuk akan keluar terlebih dahulu. Sedangkan antrian prioritas adalah jenis antrian di mana elemen memiliki tingkatan prioritas tertentu, sehingga elemen dengan prioritas lebih tinggi akan keluar terlebih dahulu meskipun masuk belakangan.


Penerapan Queue dalam Sistem Komputer

Contoh Penerapan

    Kegunaan

Antrian CPU pada sistem operasi

    Mengatur urutan eksekusi tugas pada CPU

Buffer pada komunikasi data   

    Menyimpan data sementara sebelum dikirim atau diterima


Comments

Popular Posts