Anda di halaman 1dari 3

type

nilaiMatKul = record
nim : string[10];
nama : string[50];
nilai : real;
end;

stack = record
top : integer;
data : array [1..10] of nilaiMatKul;
end;
procedure createEmpty(var S : stack);
begin
S.top := -1;
end;
function isEmpty(var S : stack) : boolean;
var
hasil : boolean;
begin
hasil := false;

if S.top = -1 then
begin
hasil := true;
end;
isEmpty := hasil;
end;
function isFull(var S : stack): boolean;
var
hasil : boolean;
begin
hasil := false;
if S.top = 10 then
begin
hasil := true;
end;
isFull := hasil;
end;
procedure push(nim : string; nama : string; nilai : real; var S : stack);
begin
if isFull(S) = true then
begin
{jika stack penuh}
writeln('stack penuh');
end
else
begin
if isEmpty(S) = true then
begin
{jika stack kosong}
S.top := 1;
S.data[1].nim := nim;
S.data[1].nama := nama;
S.data[1].nilai := nilai;
end
else
begin
{jika stack tidak kosong}
S.top := S.top + 1;
S.data[S.top].nim := nim;
S.data[S.top].nama := nama;
S.data[S.top].nilai := nilai;
end;
end;
end;
procedure pop(var S : stack);
begin
if S.top = 1 then
begin
{jika stack berisi satu elemen}
S.top := -1;
end
else
begin
if S.top <> -1 then
begin
{jika stack tidak kosong}
S.top := S.top - 1;
end;
end;
end;
procedure printStack(var S : stack);
var
i : integer;
begin
if S.top <> -1 then
begin
writeln('-------isi stack-------');
for i := S.top downto 1 do
begin
writeln('=====================');
writeln('elemen ke : ', i);
writeln('nim : ', S.data[i].nim);
writeln('nama : ', S.data[i].nama);
writeln('nilai : ', S.data[i].nilai);
end;
writeln('-----------------------');
end
else
begin
{proses jika stack kosong}
writeln('stack kosong');
end;
end;
var
S : stack;
begin
createEmpty(S);
printStack(S);
writeln('=================');
push('13507701', 'Nana', 64.75, S);
push('13507702', 'Rudi', 75.11, S);
push('13507703', 'Dea', 84.63, S);
printStack(S);
writeln('=================');
pop(S);
pop(S);
printStack(S);
writeln('=================');
end.

Anda mungkin juga menyukai