Ош1
Материал из Вики проекта PascalABC.NET
Перейти к навигацииПерейти к поиску
type
StackException=class(Exception)
end;
Node = class
private
Data: integer;
Next: Node;
constructor Create(aData: integer; aNext: Node);
begin
Data := aData;
Next := aNext;
end;
end;
IntStack = class
private
top: Node;
public
procedure Push(d: integer);virtual;
begin
top := new Node(d, top);
end;
function Pop: integer; virtual;
begin
result := top.Data;
top := top.Next;
end;
function Peek: integer; virtual;
begin
if top=nil then raise new StackException('Peek:обращение к пустому стеку');
result := top.Data;
end;
procedure Clear; virtual;
begin
top := nil;
end;
function ToString: string; override;
var
t: Node;
begin
result := '';
t := top;
while t <> nil do
begin
result := result + IntToStr(t.Data) + '-';
t := t.Next;
end;
result := result + 'nil';
end;
end;
var
s: IntStack;
i: integer;
begin
s := new IntStack;
writeln(s);
for i := 1 to 5 do
begin
s.Push(random(100));
writeln(s);
end;
writeln(s.Pop);
writeln(s);
// try
s.Clear;
// i:=StrToInt('abc');
s.Peek;
// except
// on e:stackexception do
write('ошибка: ');
//end;
end.