ADT Queue: Implementasi dengan Representasi Sekuensial (Array) |
Berikut ini adalah *sebuah contoh*
implementasi ADT Queue dengan representasi sekuensial
(Array). Sekali lagi, ini hanyalah contoh, dan bukan
satu-satunya implementasi ADT Queue. Jadi kalau anda
memiliki suatu implementasi ADT Queue yang menurut anda
lebih baik, silahkan digunakan. Perhatikan bahwa implementasinya dibagi 2 file: QueueTypes.h dan QueueImplementation.c. File QueueTypes.h mendefinisikan tipe data Queue dan ItemType yang dipakai oleh QueueImplementation.c. Dua file ini, beserta dengan QueueInterface.h membentuk suatu paket ADT Queue yang siap dipakai. /* Nama File: "QueueTypes.h" -> representasi Sekuensial */ #define MAXQUEUESIZE 100 typedef <masukkan tipe data di sini: char, float, dll.> ItemType; typedef struct { int Count; int Front; int Rear; ItemType Items[MAXQUEUESIZE]; } Queue; /* Nama File: "QueueImplementation.c" -> representasi Sekuensial */ #include<stdio.h> #include<stdlib.h> #include"QueueInterface.h" void InitializeQueue(Queue *Q) { Q->Count=0; Q->Front=0; Q->Rear=0; } int Empty(Queue *Q) { return(Q->Count==0); } int Full(Queue *Q) { return(Q->Count==MAXQUEUESIZE); } void Insert(ItemType R, Queue *Q) { if(Q->Count==MAXQUEUESIZE) { printf("Maaf, anda mencoba menambah item ke Queue yang penuh!\n"); } else { Q->Items[Q->Rear]=R; Q->Rear=(Q->Rear+1)%MAXQUEUESIZE; ++(Q->Count); } } void Remove(Queue *Q, ItemType *F) { if(Q->Count==0) { printf("Anda mencoba mengambil item dari Queue yang kosong!\n"); } else { *F=Q->Items[Q->Front]; Q->Front=(Q->Front+1)%MAXQUEUESIZE; --(Q->Count); ) } |