QUEUE
- Queue Dengan Array
a. Bersifat FIFO
b. Elemen yang pertama
masuk ke antrian akan keluar pertama kalinya
c. DEQUEUE adalah
mengeluarkan satu elemen dari suatu Antrian
d. Antrian dapat
dibuat dengan menggunakan: Liniear Array dan Circular Array
- Queue Linier Array
a. Terdapat satu buah
pintu masuk di suatu ujung dan satu buah pintu keluar di ujung satunya
b. Sehingga
membutuhkan 2 variabel : Head dan Tail
- Operasi-operasi:
Create()
a. Untuk menciptakan
dan menginisialisasi Queue
b. Dengan cara membuat
Head dan Tail = -1
- IsEmpty()
a. Untuk memeriksa
apakah Antrian sudah penuh atau belum
b. Dengan cara
memeriksa nilai Tail, jika Tail = -1 maka empty
c. Kita tidak
memeriksa Head, karena Head adalah tanda untuk kepala antrian (elemen pertama
dalam antrian) yang tidak akan berubah-ubah
d. Pergerakan pada
Antrian terjadi dengan penambahan elemen Antrian kebelakang, yaitu menggunakan
nilai Tail.
- Fungis IsFull
a. Untuk mengecek
apakah Antrian sudah penuh atau belum
b. Dengan cara
mengecek nilai Tail, jika Tail >= MAX-1 (karena MAX-1 adalah batas elemen
array pada C) berarti sudah penuh.
- Enqueue
a. Untuk menambahkan
elemen ke dalam Antrian, penambahan elemen selalu ditambahkan di elemen paling belakang
b. Penambahan elemen
selalu menggerakan variabel Tail dengan cara increment counter Tail terlebih
dahulu.
- Dequeue()
a. Digunakan untuk
menghapus elemen terdepan/pertama (head) dari Antrian
b. Dengan cara
menggeser semua elemen antrian kedepan dan mengurangi Tail dgn 1
c. Penggeseran
dilakukan dengan menggunakan looping.
- Clear()
a. Untuk menghapus
elemen-elemen Antrian dengan cara membuat Tail dan Head = -1
b. 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()
a. Untuk menampilkan
nilai-nilai elemen Antrian
b. Menggunakan looping
dari head s/d tail
- Dari penjelasan diatas mari kita rubah kedalam bahasa pemograman C++ :
#include <iostream>
#include <conio>
int tail, max, head;
int data[5];
int menu;
void create()
{
tail = -1;
head = 0;
max = 4;
}
bool isfull()
{
if (tail==max)
{
return true;
}
else
{
return false;
}
}
bool isempty()
{
if (tail<head)
{
return true;
}
else
{
return false;
}
}
void clear ()
{
tail=-1;
}
void main()
{
create(); // panggil prosedur create
home:
clrscr();
cout<<"Silahkan pilih salah satu"<<endl;
cout<<"1. EnQueue"<<endl;
cout<<"2. DeQueue"<<endl;
cout<<"3. Print"<<endl;
cout<<"4. Clear"<<endl;
cout<<"Pilih salah satu (1-4) : ";
cin>>menu;
switch(menu)
{
case 1:
if (isfull()==true)
{
cout<<"Antrian Penuh";
}
else
{
tail++;
cout<<"Masukan data ke antrian : ";
cin>>data[tail];
}
getch();
goto home;
break;
case 2:
if(isempty()==true)
{
cout<<"Antrian kosong";
}
else
{
cout<<"Data yg keluar adalah : ";
cout<<data[head];
for (int i=0; i<tail; i++)
{
data[i] = data[i+1];
}
tail--;
}
getch();
goto home;
break;
if(isempty()==true)
{
cout<<"Antrian kosong";
}
else
{
cout<<"Isi data pada antrian : ";
for(int i=head; i<=tail; i++)
{
cout<<data[i]<<" ";
}
}
getch();
goto home;
break;
}
getch();
}
- Setelah pengcodingan berhasil maka akan tampi seperti dibawah ini :
Semoga bermanfaat untuk kita semua :) Sekian dan Terimakasih sampai jumpa dipost selanjutnya :)
Salam STIKOMERS www.stikom-bali.ac.id
Tidak ada komentar:
Posting Komentar