Widget by Restana Corporation

Thursday, October 9, 2014

Sintak Algoritma Stack (TUMPUKAN) di Pascal


Pengertian Stack atau Tumpukan adalah suatu stuktur data yang penting dalam pemrograman yang mempunyai sifat LIFO (Last In First Out), Benda yang terakhir masuk ke dalam stack akan menjadi benda pertama yang dikeluarkan dari stack.  Stack (Tumpukan) adalah list linier yang dikenali elemen puncaknya (TOP) dan Aturan penyisipan dan penghapusan elemennya tertentu. Penyisipan selalu dilakukan “di atas“  TOP dan Penghapusan selalu dilakukan pada TOP.

Ilustrasi stack pada saat inisialisasi


Fungsi IsFull
Untuk memeriksa apakah stack sudah penuh?
Dengan cara memeriksa top of stack, jika sudah sama dengan MAX_STACK-1 maka full, jika belum (masih lebih kecil dari MAX_STACK-1) maka belum full

Ilustrasi

Sintak Stack :
----------------------
Program StackTumpukan;
uses crt;

const Nmax = 100;

type Stack = record
           isi : array[1..Nmax] of integer;
           top : integer;
     end;

function IsEmpty(S : Stack) : boolean; {mengecek stack kosong}
     var
        empty : boolean;
     begin
        if S.top = 0 then
           empty := true
        else
            empty := false;
        IsEmpty := empty;
     end;

function IsFull(S : Stack) : boolean; {mengecek stack penuh}
     var
        full : boolean;
     begin
        if S.top = Nmax then
           full:=true
        else
            full:=false;
        IsFull := full;
     end;

Procedure PUSH (var S:Stack; x : integer); {fungsing push/ memasukkan}
     begin
       if IsFull(S) = false then
        begin
             S.top := S.Top + 1;
             S.isi[S.top] :=x;
        end;
     end;
Procedure POP (var S : Stack; var  x : integer); {fungsi pop / mengambil/dilayani}
     begin
          if IsEmpty(S) = false then
          begin
               x:=S.isi[S.top];
               S.top := S.top-1;
          end;
          writeln('Hasil POP ', x);
     end;

// contoh program utama
var
   a,b,c,x,i : integer;
   S : Stack;
begin
   a := 5;
   b := 3;
   c := 7;
   s.top:=0;
   PUSH(S,a);
   PUSH(S,c*c);
   POP(S,x);
   b:=x;
   PUSH(S,a+b);
   POP(S,x);
   a:=x;
   POP(S,x);
   b:=x;

   for i:=1 to s.top do
       writeln(S.isi[i]);

   writeln(s.top);
      readln;

end.




Related Post :

Newer Post Older Post Home
Comments
0 Comments

0 comments: