Kamis, 04 Juni 2015

QUEUE PADA C++



QUEUE PADA C++
Queue (antrian) adalah operasi pemasukan data yang hanya diperbolehkan masuk dari sisi belakang dan operasi penghapusan hanya boleh dilakukan pada sisi depan. Prinsip dari queue sendiri yaitu FIFO (First In First Out) mirip seperti orang yang sedang mengantri.
Bentuk deklarasi queue pada umumnya adalah :
#define max 8
typedef struct{
       int data[max];
       int depan;
       int blkg;
}QUEUE;
QUEUE antrian;
Queue mempunya 5 proses operasi yaitu :
1)   Create
Untuk menginisialisasi queue dengan cara meletakkan depan dan blkg pada indeks ke-0.
void create()
{
antrian.depan = 0;
antrian.blkg = 0;
}
2)   IsEmpty
Untuk memeriksa apakah queue kosong.
int IsEmpty()
{
if((antrian.depan>antrian.blkg) || (antrian.depan==0) && (antrian.blkg==0))
return 1;
else
return 0;
}
3)   IsFull
Untuk memeriksa apakah queue sudah penuh.
int IsFull()
{
if (antrian.blkg==max)
return 1;
else
return 0;
}
4)   Enqueue
Untuk menambah item di blkg.
void enqueue(int x)
{
if ((antrian.depan == 0) && (antrian.blkg == 0))
{
antrian.depan = 1;
antrian.blkg = 1;
}
else
{
antrian.blkg = antrian.blkg + 1;
}
antrian.data[antrian.blkg] = x;
}
5)   Dequeue
Untuk menghapus item dari depan.
void Dequeue()
{
if (q.depan > q.blkg)
{
q.depan = 0;
q.blkg = 0;
}
else
q.depan = q.depan + 1;
}
6)   Clear
Untuk mengosongkan queue.
void clear()
{
antrian.depan=antrian.blkg=-1;
cout<<”DATA KOSONG”;
}

Agar lebih mudah memahaminya saya akan berikan source code yang sederhan tetapi tidak sesuai dengan operasi queue di atas.
Source code :
#include<iostream.h>
#include<conio.h>
#include<stdlib.h>
#define n 5

int Q[n],F,R,X;
void awal()
{
F=0;R=-1;
}
void insertq()
{
if(R<n-1)
{
R++;
Q[R]=X;
}
else
cout<<"DATA KOSONG";
}
void deleteq()
{
if(F<R+1)
{
X=Q[F];
F++;
cout<<X<<" ";
if((F==R+1)&&(R==n-1))
{
awal();
}
}
else
cout<<"DATA KOSONG";
}

void main()
{
int pilih;
char jawab;

awal();
jawab='y';
while (jawab=='y' || jawab=='Y')
{
clrscr();
cout<<"------------------------------------------"<<endl;
cout<<"QUEUE"<<endl;
cout<<"------------------------------------------"<<endl;
cout<<"1. INSERT Data"<<endl;
cout<<"2. DELETE Data"<<endl;
cout<<"3. EXIT Aplication"<<endl;
cout<<endl<<"INPUTKAN PILIHAN : ";
cin>>pilih;
cout<<"------------------------------------------"<<endl;

switch (pilih)
{
case 1:
cout<<"INPUTKAN DATA KE QUEUE : ";
cin>>X;
insertq();
break;
case 2:
cout<<"DATA DALAM ANTRIAN YANG DIHAPUS"<<endl;
deleteq();
break;
case 3:
exit;
}
cout<<endl<<"------------------------------------------"<<endl;
cout<<endl<<"APAKAH AKAN MEMILIH LAGI ? (y/n) ";cin>>jawab;
}
getch();
}
Studi kasus :
1.    Insert data ke dalam queue. Dan input data = 21, kemudian lakukan insert data lagi dengan memilih “y” untuk memilih lagi.

2.    Insert data lagi, data yang diinsert = 3, kemudian lakukan insert data lagi.

3.    Insert 1 data lagi dengan nilai = 12. Setelah diinsert pilih “y” lagi. Setelah ini kita akan lakukan delete data (mengeluarkan data).

4.    Sekarang kita keluarkan satu per satu data yang ada pada queue, pastikan data yang keluar pertama adalah 21. Kemudian keluarkan data 3, dan data yang terakhir yaitu 12.



Pilih “n” untuk selesai.
SEKIAN MATERI QUEUE DARI SAYA MOHON MAAF JIKA ADA KETIDAKLENGKAPAN MATERI
TERIMA KASIH
Sumber : Materi perkuliahan STMIK AMIKOM YOGYAKARTA, dan coding dari Dosen Praktikum Struktur Data STMIK STIKOM Bali : IB Ketut Surya Arnawa, S.Kom.

0 komentar:

Posting Komentar