Senin, 14 Oktober 2019

Algoritma dan Struktur Data

Pada hari ini saya akan membahas sedikit tentang STACK.

Stack  adalah  suatu  tumpukan.  Konsep  utama  dari  stack  adalah  LIFO  (Last  In  First  Out),  yaitu  benda  yang  terakhir  masuk  ke  dalam  stack  akan  menjadi  benda  pertama  yang  dikeluarkan  dari  tumpukan.  Dalam  pascal  ada  dua  cara  penerapan  stack,  yaitu  dengan  array dan linked list.

Single Stack dengan Array 

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 operasi‐operasi stack dengan array adalah :   
Const   
Max = {jumlah tumpukan}   
Type     
        TipeData = {   };     
        Stack = array [1..Max] of TipeData; 
Var     
       Top : TipeData; 

Operasi­-operasi pada Single Stack dengan Array 

  • Create : Membuat stack baru yang masih kosong  
Procedure Create;   
Begin   
    Top := 0;    
End; 

  • Full : 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;

  • Empty : 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 := Top‐1; { atau Dec(Top) }      
     End;    
End;

  • Clear : Mengosongkan stack ( Jika top = 0, maka stack dianggap kosong)  
Procedure Clear;    
Begin   
    Top := 0;    
End;

Demikian penjelasannya , Mohon maaf bila ada kesalahan dalam penulisan. Semoga bermanfaat.

Tidak ada komentar:

Posting Komentar