ADT Queue: Implementasi dengan Representasi Linked (Pointer)
Berikut ini adalah *sebuah contoh* implementasi ADT Queue dengan representasi linked (Pointer). 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, QueueNode, 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 Linked */

typedef <masukkan tipe data di sini: char, float, dll.> ItemType;

typedef struct QueueNodeType
{
   ItemType Item;
   struct QueueNodeType *Next;
} QueueNode;

typedef struct
{
   QueueNode *Front;
   QueueNode *Rear;
} Queue;

/* Nama File: "QueueImplementation.c" -> representasi Linked */
#include<stdio.h>
#include<stdlib.h>
#include"QueueInterface.h"

void InitializeQueue(Queue *Q)
{
   Q->Front=NULL;
   Q->Rear=NULL;
}

int Empty(Queue *Q)
{
   return(Q->Front == NULL);
}

int Full(Queue *Q)
{
   return 0;
}

void Insert(ItemType R, Queue *Q)
{
   QueueNode *Temp;

   Temp=(QueueNode *) malloc(sizeof(QueueNode));

   if(Temp==NULL)
   {
      printf("Maaf, pengalokasian memori gagal!\n");
   }
   else
   {
      Temp->Item=R;
      Temp->Link=NULL;
      if(Q->Rear==NULL)
      {
         Q->Front=Temp;
         Q->Rear=Temp;
      }
      else
      {
         Q->Rear->Link=Temp;
         Q->Rear=Temp;
      }
   }
}

void Remove(Queue *Q, ItemType *F)
{
   QueueNode *Temp;

   if(Q->Front==NULL)
   {
      printf("Anda mencoba mengambil item dari Queue yang kosong!\n");
   }
   else
   {
      *F=Q->Front->Item;
      Temp=Q->Front;
      Q->Front=Temp->Link;
      free(Temp);
      if(Q->Front==NULL)Q->Rear=NULL;
   )
}

klik di sini untuk kembali ke halaman utama...