ADT Stack: Implementasi dengan Representasi Linked (Pointer)
Berikut ini adalah *sebuah contoh* implementasi ADT Stack dengan representasi linked (Pointer). Sekali lagi, ini hanyalah contoh, dan bukan satu-satunya implementasi ADT Stack. Jadi kalau anda memiliki suatu implementasi ADT Stack yang menurut anda lebih baik, silahkan digunakan.

Perhatikan bahwa implementasinya dibagi 2 file: StackTypes.h dan StackImplementation.c. File StackTypes.h mendefinisikan tipe data Stack, StackNode, dan ItemType yang dipakai oleh StackImplementation.c. Dua file ini, beserta dengan StackInterface.h membentuk suatu paket ADT Stack yang siap dipakai.

/* Nama File: "StackTypes.h" -> representasi Linked */

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

typedef struct StackNodeType
{
   ItemType Item;
   struct StackNodeType *Next;
} StackNode;

typedef struct
{
   StackNode *ItemList;
} Stack;

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

void InitializeStack(Stack *S)
{
   S->ItemList=NULL;
}

int Empty(Stack *S)
{
   return(S->ItemList == NULL);
}

int Full(Stack *S)
{
   return 0;
}

void Push(ItemType X, Stack *S)
{
   StackNode *Temp;

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

   if(Temp==NULL)
   {
      printf("Maaf, pengalokasian memori gagal!\n");
   }
   else
   {
      Temp->Next=S->ItemList;
      Temp->Item=X;
      S->ItemList=Temp;
   }
}

void Pop(Stack *S, ItemType *X)
{
   StackNode *Temp;

   if(S->ItemList==NULL)
   {
      printf("Maaf, anda mencoba mengambil item dari Stack yang kosong!\n");
   }
   else
   {
      Temp=S->ItemList;
      *X=Temp->Item;
      S->ItemList=Temp->Next;
      free(Temp);
   )
}

klik di sini untuk kembali ke halaman utama...