Stack Using Array


  • Eri
  • erialň≥newtimesroman[~@t~]gmail[~d.t~]com
  • Tuesday, February 2nd, 2010
  • CopyLEFT (c) 2011++ www.spyrozone.net All Rights Reserved


Stack atau dalam bahasa kita disebut tumpukan adalah suatu urutan elemen dimana elemen-elemen tersebut hanya dapat diambil atau ditambah melalui posisi teratas saja. Istilah kerennya LIFO (Last In, First Out), siapa yang masuk paling terakhir, dialah yang keluar paling awal :D Misalkan ada 20 tumpuk karung beras dalam gudang. Saat ingin memindahkan beras-beras itu ke Gudang lain, orang akan mengambil tumpukan paling atas terlebih dahulu, khan? (Jawab aja iya, dech ^^)

Stack memiliki 2 operasi dasar, yaitu:

  1. Operasi push, untuk menambahkan elemen (pada urutan teratas tentunya).
  2. Operasi pop, untuk mengambil elemen dan menghapusnya dari stack.

Berikut adalah contoh implementasi Stack dengan mengunakan Array dalam C:

#include<stdio.h>
#define MAX 50

typedef int data_Type;
typedef struct
{
 data_Type data[MAX];
 int TOS;
}STACK;

data_Type item[MAX], temp, x;
int pilih, i, n;
char lagi='y';

void inisialisasi(STACK *s)
{
 s->TOS = 0;
}

int full(STACK *s)
{
 return (s->TOS == n);
}

int empty(STACK *s)
{
 return (s->TOS == 0);
}

void push(data_Type x, STACK *s)
{
 if(full(s))
 puts("Stack is Full!");
 else
 {
 s->data[s->TOS] = x;
 (s->TOS)++;
 }
}

data_Type pop(STACK *s)
{
 data_Type tampung;
 if(empty(s))
 puts("Stack is Empty!");
 else
 {
 (s->TOS)--;
 tampung = s->data[s->TOS];
 }
 return tampung;
}

void tampil(STACK *s)
{
 for(i=s->TOS-1; i>=0; i--)
 {
 printf("%d  ", s->data[i]);
 }
 puts("");
}

main()
{
 STACK s;
 inisialisasi(&s);

 printf("Masukkan jumlah tumpukan : ");
 scanf("%d", &n);

 while((lagi == 'y') || (lagi == 'Y'))
 {
 puts("MENU");
 puts("1. Push");
 puts("2. Pop");
 printf("What do you want?: ");
 scanf("%d", &pilih);

 switch(pilih)
 {
 case 1:
 printf("Enter data: ");
 scanf("%d", &x);
 push(x, &s);
 break;
 case 2:
 pop(&s);
 break;
 default :
 puts("Invalid Input!");
 break;
 }
 tampil(&s);
 fflush(stdin);
 printf("Try again [y/t]? ");
 scanf("%c", &lagi);
 puts("");
 }
}

Sekian dulu tulisan singkat saya. Mudah-mudahan bermanfaat bagi yang sedang memulai belajar C/C++ ;)


//E.O.F