pascalabcnet/TestSamples/FormatterTests/input/stack2.pas
Бондарев Иван e6e67c193c initial commit
2015-05-14 21:35:07 +02:00

67 lines
1.1 KiB
ObjectPascal

// Äåìîíñòðàöèÿ ñîçäàíèÿ êëàññà ñòåêà íà áàçå ñïèñêà
type
pnode=^node;
node=record
data: integer;
next: pnode;
end;
stack=class
t: pnode;
constructor Create;
begin
t:=nil;
end;
function empty: boolean;
begin
empty:=t=nil;
end;
procedure push(i: integer);
var v: pnode;
begin
New(v);
v^.data:=i;
v^.next:=t;
t:=v;
end;
function top: integer;
begin
if empty then begin
writeln('ïîïûòêà âçÿòü ýëåìåíò ñ ïóñòîãî ñòåêà');
exit;
end;
top:=t^.data;
end;
function pop: integer;
var v: pnode;
begin
if empty then begin
writeln('ïîïûòêà âçÿòü ýëåìåíò ñ ïóñòîãî ñòåêà');
exit;
end;
pop:=top;
v:=t;
t:=t^.next;
dispose(v);
end;
procedure Destroy;
var i: integer;
begin
while not empty do
i:=pop;
end;
end;
var s: stack;
begin
cls;
s:=stack.Create;
s.push(7);
s.push(2);
s.push(5);
while not s.empty do
write(s.pop,' ');
s.Destroy;
end.