program stack;
uses crt;
type
tipeinfo=integer;
tipeptr=^tipenode;
tipenode =record
info :integer;
next:tipeptr;
end;
tipestack=tipeptr;
var stackpointer:tipestack;
data: tipeinfo;
kata:string;
i:byte;
procedure inisialisasi(var mystack:tipestack);
begin
new(mystack);
mystack:=nil;
end;
function stackkosong(var mystack:tipestack):boolean;
begin
stackkosong:=mystack=nil;
end;
procedure push(var mystack:tipestack; infobaru:integer);
var nodebaru:tipeptr;
begin
new(nodebaru);
nodebaru^.info:=infobaru;
nodebaru^.next:=mystack;
mystack:=nodebaru;
end;
function pop(var mystack:tipestack):integer;
var
temp:tipeptr;
begin
if not(stackkosong(mystack)) then
begin
pop:=mystack^.info;
temp:=mystack;
mystack:=mystack^.next;
dispose(temp);
end;
end;
procedure cetak(mystack:tipestack);
var temp:tipestack;
begin
temp:=mystack;
while (mystack<>nil) do
begin
writeln(mystack^.info);
mystack:=mystack^.next;
end;
end;
begin
inisialisasi(stackpointer);
push(stackpointer,5);
push(stackpointer,2);
push(stackpointer,9);
cetak(stackpointer);
writeln(pop(stackpointer));
readln;
end.
No comments:
Post a Comment