Pengertian Queue adalah kumpulan data dengan

advertisement
Pengertian
Queue adalah kumpulan data dengan penambahan data hanya melalui satu sisi, yaitu
belakang (tail) dan penghapusan data hanya melalui sisi depan (head).
Konsepnya hampir sama dengan Stack, perbedaannya adalah operasi penambahan dan
penghapusan pada ujung yang bebeda. Penghapusan dilakukan pada bagian depan (front) dan
penambahan berlaku pada bagian belakang (Rear). Elemen-elemen di dalam antrian dapat
bertipe integer, real, record dalam bentuk sederhana atau terstruktur.
Queue disebut juga “Waiting Line” yaitu penambahan elemen baru dilakukan pada bagian
belakang dan penghapusan elemen dilakukan pada bagian depan. Sistem pada pengaksesan
pada Queue menggunakan sistem FIFO (First In First Out), artinya elemen yang pertama
masuk itu yang akan pertama dikeluarkan dari Queue. Queue jika diartikan secara harfiah,
queue berarti antrian.
Perbedaan Stack dengan Queue
Stack memakai sistem LIFO atau last in first out (yang pertama masuk akan keluar terakhir,
begitu pula yang terakhir masuk akan keluar pertama kali) yang apabila kita mengahapus/
keluar data, maka data yang terakhirlah yang akan terhapus/ keluar terlebih dahulu.
Sementara queue memakai siste FIFO atau first in first out (yang pertama masuk akan keluar
pertama, begitu pula yang masuk terakhir akan keluar terakhir) yang apabila kita menghapus /
mengeluarkan data, maka data yang pertamalah yang akan terhapus/ keluar terdahulu dan
data yang terakhir akan terhapus/ keluar terakhir.
Operasi-Operasi pada Queue
 IsEmpty, berguna untuk mengecek apakah queue masih kosong atau sudah berisi data. hal ini
dilakukan dengan mengecek apakah tail bernilai -1 atau tidak. Nilai -1 menandakan bahwa
queue masih kosong.
 IsFull, berguna untuk mengecek apakah queue sudah penuh atau masih bias menampung data
dengan cara mengecek apakah nilai tail sudah sama dengan jumlah maksimal queue. Jika
nilai keduanya sama, berarti queue sudah penuh.
 EnQueue, berguna untuk memasukkan sebuah elemen dalam queue.
 DeQueue, berguna untuk mengambil sebuah elemen dari queue. Operasi ini sering disebut
juga serve. Hal ini dilakukan dengan cara memindahkan sejauh satu langkah ke posisi di
depannya sehingga otomatis elemen yang paling depan akan tertimpa dengan elemen yang
terletak di belakangnya.
 Destroy, berguna untuk menghapus semua elemen dalam queue ataupun queue itu sendiri.
#include <iostream.h>
#include <conio.h>
#define max 100
struct {
int tail;
int head;
int data[max];
}queue;
void awal(){
queue.tail = -1;
queue.head = 0;
}
int kosong(){
if(queue.tail == -1)
return 1;
else
return 0;
}
int penuh(){
if(queue.tail == max-1)
return 1;
else
return 0;
}
void input(int a){
if(kosong() == 1){
queue.tail++;
queue.data[queue.tail]=a;
cout<<"Data "<<queue.data[queue.tail]<<" masuk ke queue [enter]";
}
else if(penuh() == 0){
queue.tail++;
queue.data[queue.tail]=a;
cout<<"Data "<<queue.data[queue.tail]<<" masuk ke queue [enter]";
}
else
cout<<"queue penuh";
}
void hapus(){
int x=queue.head+1;
if(kosong() == 0){
while(x<=queue.tail){
queue.data[x-1]=queue.data[x];
x++;
}
cout<<"Data sudah terambil";
queue.tail--;
}
else
cout<<"Data kosong";
}
void tampil(){
if (kosong() == 0){
for (int i=queue.head; i<=queue.tail; i++){
cout<<endl<<"Queue ke-"<<i<<" : "<<queue.data[i];
}
} else
cout<<endl<<"queue kosong";
}
void bersih(){
queue.tail = -1;
cout<<endl<<"queue kosong";
}
void main(){
int menu, nilai;
awal();
do{
clrscr();
cout<<"-- QUEUE --"<<endl<<endl;
cout<<"1. Enqueue"<<endl;
cout<<"2. Dequeue"<<endl;
cout<<"3. Tampil"<<endl;
cout<<"4. Destroy"<<endl;
cout<<"5. Keluar"<<endl;
cout<<"__________________"<<endl<<endl;
cout<<"masukan fungsi : ";
cin>>menu;
switch (menu){
case 1:
clrscr();
cout<<"-- ENQUEUE --"<<endl<<endl;
cout<<"Masukkan data : ";
cin>>nilai;
input(nilai);
break;
case 2:
clrscr();
cout<<"-- DEQUEUE --"<<endl<<endl;
hapus();
break;
case 3:
clrscr();
cout<<"-- QUEUE --"<<endl;
tampil();
break;
case 4:
bersih();
break;
case 5:
cout<<endl<<"Tekan enter untuk keluar ";
}
getch();
}
while(menu != 5);
}
Download