Pengertian dan Algoritma Stack (Tumpukan) di Pascal

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.



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

Algoritma Stack di Pascal
---------------------------------

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;

Download Algoritmanya disini


0 Response to "Pengertian dan Algoritma Stack (Tumpukan) di Pascal"

Post a Comment