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);
   )
}

klik di sini untuk kembali ke halaman utama...