QueueArray

 avatar
unknown
java
9 months ago
2.7 kB
28
Indexable
package QueueNew;

public class QueueArray {
    private final int[] data;
    private int front, rear, size; // front: indeks depan, rear: indeks belakang, size: jumlah elemen

    public QueueArray(int capacity) {
        data = new int[capacity]; // inisialisasi array dengan kapasitas tertentu
        front = 0; // inisialisasi front
        rear = -1; // inisialisasi rear
        size = 0; //  inisialisasi size
    }

    public boolean isEmpty() { return size == 0; } // cek apakah queue kosong
    public boolean isFull()  { return size == data.length; } // cek apakah queue penuh
    public int size()        { return size; } // mengembalikan jumlah elemen dalam queue
    public void clear() { // mengosongkan queue
        front = 0; // reset front
        rear = -1; // reset rear
        size = 0; //  reset size
    }

    public void enqueue(int value) {
        if (isFull()) { // cek apakah queue penuh
            System.out.println("Queue penuh!");
            return;
        }
        rear = (rear + 1) % data.length; // update rear secara melingkar
        data[rear] = value; // tambahkan elemen baru di rear
        size++; // tingkatkan ukuran queue
    }

    public int dequeue() {
        if (isEmpty()) { // cek apakah queue kosong
            System.out.println("Queue kosong!"); // jika kosong, tampilkan pesan dan kembalikan nilai sentinel
            return Integer.MIN_VALUE; // nilai sentinel
        }
        int val = data[front]; // ambil elemen di front
        front = (front + 1) % data.length; //update front secara melingkar
        size--; // kurangi ukuran queue
        return val; // kembalikan elemen yang dihapus
    }

    public int peek() { // melihat elemen di depan tanpa menghapusnya
        if (isEmpty()) { // cek apakah queue kosong
            System.out.println("Queue kosong!"); // jika kosong, tampilkan pesan dan kembalikan nilai sentinel
            return Integer.MIN_VALUE; // nilai khusus
        }
        return data[front]; // kembalikan elemen di front
    }

    public void traverse() { // menelusuri elemen dalam queue tanpa mengubahnya
        if (isEmpty()) { // cek apakah queue kosong
            System.out.println("[TRAVERSE] Queue kosong.");
            return;
        }
        System.out.print("[TRAVERSE] FRONT -> "); // tampilkan elemen dari front ke rear
        for (int i = 0; i < size; i++) { // iterasi sebanyak ukuran queue
            int index = (front + i) % data.length; // hitung indeks aktual secara melingkar
            System.out.print(data[index]); // tampilkan elemen
            if (i < size - 1) System.out.print(" | "); // pemisah antar elemen
        }
        System.out.println(" -> REAR");
    }
}
Editor is loading...
Leave a Comment