Kamis, 25 April 2013

STACK (Tumpukan) Pada Algoritma

STACK (Tumpukan)
Definisi Stack
Stack adalah suatu tumpukan dari benda. Konsep utamanya adalah LIFO (Last In First
Out), benda yang terakhir masuk dalam stack akan menjadi benda pertama yang dikeluarkan dari stack.


Contoh Program Stack

#include <stdio.h>
#include <conio.h>
#include <string.h>

//deklarasi var public
const MaxElemen = 255; //batas maksimum elemen
struct Tumpukan
{
      char Isi[MaxElemen];
      int Atas;
} T;

void PUSH(char x);
char POP();


//program utama
void main ()
{
     int I;       // pencacah
     char Kalimat[MaxElemen];   //kalimat yang akan dibalik
     clrscr();
     T.Atas =0;  // niali awal tumpukan
     printf ("Aplikasi Tumpukan untuk Membalik kalimat\n");
     printf ("----------------------------------------\n\n");

     // Inputkan kalimat yang akan dibalik
     printf("Masukkan sembarang kalimat : ");gets(Kalimat);

     clrscr();
     printf("Kalimat Asli : %s\n",Kalimat);

     //Mem-PUSH huruf dari kalimat ke dalam tumpukan
     for(I=0;I<strlen(Kalimat);I++)
     {
      PUSH(Kalimat[I]);
      }

      printf("Kalimat Setelah di Balik : ");

      //Mem-POP sekaligus mencetak isi tumpukan sehingga diperoleh kalimat yang terbalik
      for (I=0;I<strlen(Kalimat);I++)
      {
       printf("%c",POP());
      }
       getch();
    } //Akhir Program Utama


    //sub program PUSH berfungsi memasukkan elemen ke dalam STACK
    void PUSH (char x)
    {
       if(T.Atas == MaxElemen)
       {
     printf("Tumpukan Sudah Penuh");
     getch();
     }
     else
     {
     T.Atas = T.Atas + 1;
     T.Isi[T.Atas] = x;
     }
    }

    //sub program POP berfungsi mengambil elemen dari STACK
    char POP()
    {
     char hasil;

     if(T.Atas == 0)
     {
       printf("Tumpukan sudah kosong");
       hasil = ' ';
     }
     else
     {
       hasil = T.Isi[T.Atas];
       T.Atas = T.Atas - 1;
     }
      return hasil;
}



Tidak ada komentar:

Posting Komentar