Tuesday, 9 June 2015

Rangkuman Materi Stack




Stack

Stack  adalah  suatu  tumpukan.  Konsep  utama  dari  stack  adalah  LIFO  (Last  In  First  Out),  yaitubenda  yang  terakhir  masuk  ke  dalam  stack  akan  menjadi  benda  pertama  yang  dikeluarkan  dari tumpukan.  Dalam  C++  ada  dua  cara  penerapan  stack.
Sesuai  dengan  sifat  stack,  maka  pengambilan/penghapusan  elemen  dalam  stack  harus  dimulai  dari  elemen  teratas.  Deklarasi  konstanta,  tipe,  dan  variable  yang  akan  dipakai  dalam penjelasan operasioperasi stack dengan array adalah : 
Const   
Max = {jumlah tumpukan}   
Type      TipeData = {   };     
Stack = array [1..Max] of TipeData;   
 Var   
Top : TipeData; 
Operasi­operasi pada Stack

Create : Membuat stack baru yang masih kosong 
Procedure Create;   
Begin   
Top := 0;    
End; 
isFull : Fungsi untuk memeriksa apakah stack yang ada sudah penuh
Function Full : Boolean;    
            Begin     
Full := False;   
If top = max then Full := True;     
End;

Push : Menambahkan sebuah elemen.elemen ke dalam stack, Tidak bisa dilakukan  lagi jika stack sudah penuh. 
Procedure Push(elemen:TipeData);    
 Begin      
If not Full then     
                        Begin     
Top := Top+1; { atau Inc(Top) }     
 Stack[Top] := elemen;      
 End;    
 End;
isEmpty : Fungsi untuk menentukan apakah stack kosong atau tidak.
Function Empty : Boolean;     
Begin     
Empty := False;     
If Top = 0 then Empty := True;     
End; 
Pop : Mengambil elemen teratas dari stack, Stack tidak boleh kosong. 
Procedure Pop(elemen:TipeData);     
Begin   
If not Empty then     
                        Begin        
            Elemen := stack[Top];   
                        Top := Top1; { atau Dec(Top) }     
                        End;   
             End; 
Clear : Mengosongkan stack ( Jika top = 0, maka stack dianggap kosong) 
Procedure Clear;   
 Begin   
Top := 0;   
            End; 

Contoh Coding Stack

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


struct STACK
{
            int data[5];
   int atas;
};

STACK tumpuk;

void main()
{
            clrscr();
   int pilihan,baru,i;
   tumpuk.atas=-1;
   do
   {
            clrscr();
      cout<<"1.Push Data"<<endl;
      cout<<"2.Pop Data"<<endl;
      cout<<"3.Print Data"<<endl;
      cout<<endl;
      cout<<"Pilihan : ";
      cin>>pilihan;
      switch(pilihan)
      {
            case 1 :
         {
            if(tumpuk.atas==5-1)
            {
                        cout<<"Tumpukan penuh";
               getch();
            }
            else
            {
                        cout<<"Data yang akan di Push :";
               cin>>baru;
               tumpuk.atas++;
               tumpuk.data[tumpuk.atas]=baru;
            }
            break;
         }
         case 2 :
         {
            if(tumpuk.atas==-1)
            {
                        cout<<"Tumpuk kosong";
               getch();
            }
            else
            {
                        cout<<"Data yang akan di Pop ="<<tumpuk.data[tumpuk.atas]<<endl;
               tumpuk.atas--;
               getch();
            }
            break;
         }
         case 3 :
         {
            if (tumpuk.atas==-1)
            {
                        cout<<"Tumpukan kosong "<<endl;
                        getch;
            }
         else
            {
                        cout<<"Data= " <<endl;
                        for(i=0;i<=tumpuk.atas;i++)
                        {
                                    cout<<tumpuk.data[i]<<" ";
                        }
            getch();
         }
         break;
      }
      default:
      {
            cout<<"Tidak ada dalam pilihan"<<endl;
      }
   }
}
            while(pilihan>=1 && pilihan<=3);
            getch();
}

Hasil Output Stack



Terimakasih.Semoga Bermaanfaat

Daftar Pustaka
Konsep dan Implementasi Struktur Data dengan C++

1 comment :