pascalabcnet/InstallerSamples/!MainFeatures/06_Classes/Stack.pas

55 lines
963 B
ObjectPascal
Raw Permalink Normal View History

// Демонстрация создания простого класса стека на базе массива
2015-05-14 22:35:07 +03:00
type
Stack<T> = class
private
a: array of T;
last: integer;
public
constructor Create(sz: integer);
begin
SetLength(a,sz);
last := 0;
end;
constructor Create;
begin
Create(100);
end;
procedure Push(i: T);
2015-05-14 22:35:07 +03:00
begin
a[last] := i;
Inc(last);
end;
function Pop: T;
2015-05-14 22:35:07 +03:00
begin
Dec(last);
Result := a[last];
2015-05-14 22:35:07 +03:00
end;
function Top: T;
2015-05-14 22:35:07 +03:00
begin
Result := a[last-1];
2015-05-14 22:35:07 +03:00
end;
function Empty: boolean;
2015-05-14 22:35:07 +03:00
begin
Result := last=0;
2015-05-14 22:35:07 +03:00
end;
function ToString: string; override;
begin
Result := '';
for var i:=0 to last-1 do
Result += a[i]+' ';
end;
end;
begin
var s := new Stack<integer>;
s.Push(7);
s.Push(2);
s.Push(5);
s.Push(4);
Println(s);
while not s.Empty do
Print(s.Pop);
2015-05-14 22:35:07 +03:00
end.