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