A. Pengertian Queue
queue adalah FIFO yang merupakan
singkatan dari First In First Out, artinya adalah data yang pertama kali
dimasukkan atau disimpan, maka data tersebut adalah yang pertama kali akan
diakses atau dikeluarkan. Analoginya sama dengan antrian di sebuah loket
pembelian tiket kereta, orang yang datang lebih dahulu, maka akan dilayani
terlbih dahulu, dan akan selesai lebih dulu dari orang-orang yang datang
setelahnya.
B. Deklarasi Antrian dengan array
Proses pendeklarasian
antrian dalam memori. Struktur antrian terdiri dari data dalam array, head
untuk menunjukkan ujung antrian dan tail untuk menunjukkan akhir antrian.
#define MAX 6
Struct Queue
{
Int
data[MAX];
Int head;
Int tail;
};
C. Inisialisasi
Inisialisasi antrian adalah
proses pembuatan suatu antrian kosong. Proses inisialisasi untuk antrian yang
menggunakan array adalah dengan mengisi nilai field head dan tail dengan 0
(nol) jika elemen pertama diawali dengan nomor 1. Kalau elemen pertama array
dimulai dengan 0 maka head dan tail diisi dengan nilai -1.
Void Create()
{
Antrian.head=antrian.tail=-1;
}
D. Operasi cek kosong
Operasi ini digunakan untuk
memeriksa apakah antrian dalam keadaan kosong. Opersai ini penting dilakukan
dalam proses Dequeu. Ketika suatu antrian dalam keadaan kosong, maka proses
Dequeu tidak bisa dilakukan. Opersai ini dilakukan dengan memeriksa tail. Jika
yail bernilai -1, maka berarti antrian dalam keadaan empty (kosong).
Int isEmpty()
{
If(antrian.tail==-1)
Return 1;
Else
Return 0;
}
E. Operasi cek penuh
Operasi ini berguna untuk memeriksa keadaan antrian
apakah sudah penuh atau belum. Operasi
ini akan memberikan nilai true (1) jika field tail sama dengan size-1.
Int isFull()
{
If(antrian.tail==MAX-1)
Return 1;
Else
Return 0;
}
F. Operasi enqueue
Operasi ini berguna untuk
menambah suatu elemen data baru pada antrian dan disimpan pada posisi head dan
tail yang akan mengakibatkan posisi tail akan berubah . langkah ini adalah :
a. Periksa apakah kosong. Jika
kosong maka ubah posisi head dan tail pada posisi 0, kemudian masukkan datanya.
b. Jika antrian tidak kosong
maka naikkan posisi tail sebesar 1, kemudian masukkan datanya.
Void enqueue(int data)
{
If(isEmpty()==1)
{
Antrian.head=antrian.tail=0;
Antrian.data[antrian.tail]=data;
Cout<
}
Else
{
Antrian.tail++;
Antrian.data[antrian.tail]=data;
Cout<
}
}
G. Operasi Dequeue
Operasi ini berguna untuk mengambil elemen pertama (head)
dari antrian. Penghapusan dilakukkan dengan cara mengurangi counter tail dan
menggeser semua elemen antrian kedepan. Penggeseran dilakukan dengan
menggunakkan looping.
Int Dequeue()
{
Int i;
Int
e=antrian.data[antrian.head];
For(i=antrian.head;i<antrian.tail-1;i++)
{
Antrian.data[i]=antrian.data[i+1];
}
Antrian.tail--;
Return e;
}
H. Operasi Clear
Digunakkan 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.
{
Antrian.head=antrian.tail=-1;
Cout<<”data
clear”;
}
I. Operasi Tampil
Digunakkan untuk menampilkan
nilai-nilai elemen antrian. Proses menampilkan data dalam antrian dilakukan
dengan menggunakan looping dari head s/d tail.
Void Tampil()
{
If(isEmpty()==0)
For (int
i=antrian.head;i<=antrian.tail;i++)
Cout< else
Cout<<”data kosong\n”;
}
Program Lengkap :
|
|
antrian.head=antrian.tail=-1;
|
|
antrian.head=antrian.tail=0;
|
|
antrian.data[antrian.tail]=data;
|
|
cout<<antrian.data[antrian.tail];
|
|
//kodisi
lainnya jika penuh() sama dengan 0 maka antrian.ekor ditambah 1
|
|
antrian.data[antrian.tail]=data;
|
|
cout<<antrian.data[antrian.tail];
|
|
int
e=antrian.data[antrian.head];
|
|
for(i=antrian.head;i<=antrian.tail-1;i++)
|
|
antrian.data[i]=antrian.data[i+1];
|
|
antrian.head=antrian.tail=-1;
|
|
for (int
i=antrian.head;i<=antrian.tail; i++)
|
|
cout<<antrian.data[i]<<"
";
|
|
cout<<"\n============MENU
PILIHAN============\n";
|
|
cout<<"--------------------------------------\n";
|
|
cout<<"Masukkan
Pilihan Anda -> ";
|
|
cout<<"Data
: ";cin>>data;
|
|
cout<<"Elemen
yang keluar : "<<Dequeue();
|
|
cout<<"Data
kosong"<<endl;
|
}
|
Referensi :
Tidak ada komentar