Ош1: различия между версиями
Материал из Вики проекта PascalABC.NET
Перейти к навигацииПерейти к поиску
Mikst (обсуждение | вклад) (Новая: <source lang="Delphi">type StackException=class(Exception) end; Node = class private Data: integer; Next: Node; constructor Create(aData: integer; aNext: Node); ...) |
(нет различий)
|
Версия от 16:49, 30 января 2011
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.