QUEUE (Antrian) Merupakan kumpulan data yang penambahan elemennya hanya bisa dilakukan pada sisi belakang dan penghapusannya hanya bisa dilakukan pada sisi depan. Konsep utamanya berkebalikan dari stack Prinsipnya adalah Elemen yang pertama kali masuk ke antrian akan keluar pertama kali. Atau dikenal dengan sebutan yaitu First In First Out.
Implementasi Antrian dapat dibuat dengan menggunakan Array atau Linked List dengan menggunakan dua pointer, yaitu satu pointer menunjuk elemen terdepan dan satu pointer menunjuk elemen terakhir. Untuk Antrian dengan menggunakan Array dapat berbentuk Liniear Array dan Circular Array.
QUEUE DENGAN LINIEAR ARRAY
Terdapat satu buah pintu masuk di suatu ujung dan satu buah pintu keluar di ujung satunya. Dibutuhkan variabel Head dan Tail. Variabel Tail untuk menunjukkan pintu masuk, sedangkan Head untuk menunjuk pintu keluar.
OPERASI-OPERASI QUEUE
Create : Operasi untuk menciptakan dan menginisialisasi Queue
Enqueue: Operasi untuk menambah elemen baru pada bagian belakang antrian
Dequeue: Operasi menghapus elemen satu per satu pada bagian depan antrian
Clear : Operasi untuk mengkosongkan antrian. (Menghapus seluruh elemen dalam antrian).
Tampil : Operasi untuk menampilkan elemen dari antrian satu demi satu
IsEmpty : Operasi untuk mengecek apakah antrian dalam kondisi kosong atau tidak.
IsFull : Operasi untuk mengecek apakah antrian dalam kondisi penuh atau tidak.
DEKLARASI QUEUE
Deklarasi Queue dengan menggunakan Linier Array adalah :
Menggunakan bantuan class, untuk membentuk Queue dalam elemennya. Variabel sebagai penunjuk posisi pintu masuk (belakang) dan pintu keluar (depan) menggunakan tipe integer. Elemen antrian diimplementasikan dengan Array satu dimensi. Batas maksimal elemen diciptakan konstanta Max.
CLEAR QUEUE
CLEAR()
Untuk menghapus elemen-elemen Antrian dengan cara membuat Tail dan Head = -1. Penghapusan elemen-elemen Antrian sebenarnya tidak menghapus arraynya, namun hanya mengeset indeks pengaksesan-nya ke nilai -1 sehingga elemen-elemen Antrian tidak lagi terbaca.
Bentuk Deklarasi QUEUE :
class Antrian{
private int ukuran;
private long[] antrian;
private int belakang;
private int jumItem;
private int depan;
public Antrian (int s){
ukuran = s;
antrian = new long[ukuran];
depan = 0;
belakang = -1;
jumItem = 0;
}
}
CREATE QUEUE
Queue()
Untuk menciptakan dan menginisialisasi Queue dengan cara membuat Head dan Tail = -1
ENQUEUE
Enqueue(data)
Untuk menambahkan elemen ke dalam Antrian, penambahan elemen selalu ditambahkan di elemen paling belakang. Penambahan elemen selalu menggerakan variabel Tail dengan cara increment.
DEQUEUE
Dequeue()
Digunakan untuk menghapus elemen terdepan/pertama dari Antrian. Dengan cara mengurangi counter Tail dan menggeser semua elemen antrian kedepan. Penggeseran dilakukan dengan menggunakan looping.
CLEAR QUEUE
CLEAR()
Untuk menghapus elemen-elemen Antrian dengan cara membuat Tail dan Head = -1. Penghapusan elemen-elemen Antrian sebenarnya tidak menghapus arraynya, namun hanya mengeset indeks pengaksesan-nya ke nilai -1 sehingga elemen-elemen Antrian tidak lagi terbaca.
TAMPIL QUEUE
Tampil()
Untuk menampilkan nilai-nilai elemen Antrian. Menggunakan looping dari head s/d tail.
ISEMPTY QUEUE
IsEmpty()
Untuk memeriksa apakah Antrian sudah kosong atau belum. Dengan cara memeriksa nilai Tail, jika Tail = -1 maka empty. Pemeriksaan tidak dilakukan terhadap Head, karena Head adalah tanda untuk kepala antrian (elemen pertama dalam antrian) yang tidak akan berubah-ubah. Pergerakan pada Antrian terjadi dengan penambahan elemen Antrian kebelakang, yaitu menggunakan nilai Tail
Contoh Program.
Buat file java ApliAntrian.java
/**
* @(#)ApliAntrian.java
*
*
* @author
* @version 1.00 2020/12/23
*/
class Antrian{
private int ukuran;
private long[] antrian;
private int belakang;
private int jumItem;
private int depan;
public Antrian (int s){
ukuran = s;
antrian = new long[ukuran];
depan = 0;
belakang = -1;
jumItem = 0;
}
public void masuk(long j){
if (!isFull()){
antrian[++belakang] = j;
jumItem++;
}
}
public long keluar(){
long temp = antrian[0];
if (!isEmpty()){
for (int i=0; i<jumItem; i++)
antrian [i] = antrian[i+1];
jumItem--;
belakang--;
}
return temp;
}
public long peekDepan(){
return antrian[depan];
}
public boolean isEmpty(){
return (jumItem==0);
}
public boolean isFull(){
return (belakang==ukuran-1);
}
public int ukuran(){
return jumItem;
}
public void lihat(){
for (int i=0; i<jumItem; i++)
System.out.print(antrian[i]+" ");
System.out.println("");
}
}
public class ApliAntrian {
public static void main(String[] args){
Antrian antrian = new Antrian(10);
antrian.masuk(13);
antrian.lihat();
antrian.masuk(32);
antrian.lihat();
antrian.masuk(45);
antrian.lihat();
System.out.println("yang diambil dari antrian = " + antrian.keluar());
antrian.lihat();
System.out.println("yang diambil dari antrian = " + antrian.keluar());
antrian.lihat();
}
}