Queue pada Struktur Data atau antrian adalah sekumpulan data yang mana penambahan elemen hanya bisa dilakukan pada suatu ujung disebut dengan sisi belakang (rear), dan penghapusan (pengambilan elemen) dilakukan lewat ujung lain (disebut dengan sisi depan atau front).
Pada Stack atau tumpukan menggunakan prinsip “Masuk terakhir keluar pertama”atau LIFO (Last In First Out), Maka pada Queue atau antrian prinsip yang digunakan adalah “Masuk Pertama Keluar Pertama” atau FIFO (First In First Out).
Queue atau antrian banyak kita jumpai dalam kehidupan sehari-hari, ex: antrian Mobil diloket Tol, Antrian mahasiswa Mendaftar, dll. Contoh lain dalam bidang komputer adalah pemakaian sistem komputer berbagi waktu(time-sharing computer system) dimana ada sejumlah pemakai yang akan menggunakan sistem tersebut secara serempak.
Pada Queue atau antrian Terdapat satu buah pintu masuk di suatu ujung dan satu buah pintu keluar di ujung satunya dimana membutuhkan variabel Head dan Tail (depan/front, belakang/rear).
Operasi-operasi Queue :
1. Create()
Untuk menciptakan dan menginisialisasi Queue
2. IsEmpty()
Untuk memeriksa apakah Antrian masih kosong
3. IsFull()
Untuk mengecek apakah Antrian sudah penuh atau belum
4. Enqueue ()
Untuk menambahkan elemen ke dalam Antrian, penambahan elemen selalu ditambahkan di elemen paling belakang
5. Dequeue()
Digunakan untuk menghapus elemen terdepan/pertama (head) dari Antrian
6. Clear()
Untuk menghapus elemen-elemen Antrian dengan cara membuat Tail dan Head = -1
7. Tampil()
Untuk menampilkan nilai-nilai elemen Antrian
Syntax Program :
//header file
# include <stdio.h>
# include <conio.h>
# include <stdlib.h>
# include <string.h>
# define QSIZE 5
//deklarasi struct
typedef struct
{
int count;
int head,tail;
char names[QSIZE][30];
}QUEUE; //nama struct
char *enqueue(char *);
char* dequeue();
//deklarasikan prototype fungsi
void tampil();
void inisialisasi();
//deklarasi Node
QUEUE *pq;
//fungsi main
int main()
{
//deklarasi variabel
int pil;
char str[30];
QUEUE q;
pq=&q;
inisialisasi(); //panggil fungsi inisialisasi
do{
system("cls"); //bersihkan layar
printf("\tMENU PILIHAN : ");
printf("\n\t______________");
printf("\n[1] Input Data");
printf("\n[2] Delete Data");
printf("\n[3] Show data in queue");
printf("\n[4] Exit\n");
printf("\nPilihan anda : ");
scanf("%d",&pil);
switch(pil){
case 1:
printf("\nSilahkan memasukkan sebuah kata : ");
fflush(stdin); //menghapus buffer data
gets(str);
puts(enqueue(str)); /*Mencetak string hasil penambahan data yang dilakukan oleh fungsi enqueue()*/
break;
case 2:
puts(dequeue()); /*Mencetak string terhapus yang dilakukan oleh fungsi enqueue()*/
break;
case 3:
tampil(); //panggil fungsi tampil()
break;
case 4: exit(0);
default: printf("\nMasukkan anda salah!!");
}
printf("\nPress Any Key to continue...");
fflush(stdin); //membersihkan buffer data
while(!kbhit());
}
while(1); //perulanagan dijalankan terus
//return 0;
}
//fungsi untuk inisialisasi awal
void inisialisasi()
{
pq->head = pq->tail = pq->count= 0;
}
//fungsi untuk menambah data string dalam queue
char* enqueue(char *p)
{
if(pq->count==QSIZE)
return "\n\n\t\t Error: Antrian penuh";
pq->tail= (pq->tail)%QSIZE;
strcpy(pq->names[(pq->tail)++],p);
pq->count++;
return "Data telah berhasil dimasukkan";
}
//fungsi untuk menghapus data string dalam queue
char* dequeue()
{
if(pq->count==0)
return "\n\n\t\t Error: Antrian kosong";
pq->head= (pq->head)%QSIZE;
pq->count--;
printf("\nData yang telah dihapus adalah\n:");
return pq->names[(pq->head)++];
}
//fungsi untuk menampilkan data yang berada dalam antrian
void tampil()
{
int i=pq->head;
int x=0;
if(pq->count==0)
printf("Antrian kosong\n");
else
{
while(x<pq->count)
{
if(i==QSIZE)
i%=QSIZE;
printf(":%s\n",pq->names[i]);
i++;
x++;
}
}
}
DAFTAR PUSTAKA
http://blog-arul.blogspot.co.id/2012/01/queue-pada-struktur-data.html
Tidak ada komentar
Posting Komentar