QueueArray
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