Thursday, July 15, 2010

bermain stack dengan array statis di pascal

program stack;

uses crt;
const maxstack=5;

type tipestack=record
data:array[1..maxstack] of integer;
top : integer;
end;

var S:tipestack;
   x:integer;


procedure inisialisasi(S:tipestack);
begin
S.top:=0;
end;

function penuh(S:tipestack):boolean;

begin
if S.top=maxstack then penuh:=true else penuh:=false;
end;

function kosong(S:tipestack):boolean;
begin
if S.top=0 then kosong:=true else kosong:= false;
end;

procedure push(var S:tipestack; x:integer);

begin
if (penuh(S)=false) then
  begin
    S.top:=S.top+1;
    S.data[S.top]:=x;
  end
else
  writeln('stack penuh');

end;

Procedure pop(var S:tipestack; var x:integer);
begin
if (kosong(S)=false) then
  begin
    x:=S.data[S.top];
    S.top:=S.top-1;
  end
else
 writeln('stack kosong');
end;

Procedure cetak (S:tipestack);
var i:integer;
begin
if kosong(S)=false then begin
for i:= 1 to S.top do
writeln(i,' ',S.data[i]);
end else
writeln('data kosong'); 
end;



Begin
inisialisasi(S);
push(S,3);
push(S,5);
push(S,2);
push(S,9);
push(S,12);
cetak(S);
pop(S,x);
writeln(x);
readln;
end.

No comments: