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:
Post a Comment