Тады примерно так:
Код:
unit StackUnit;
interface
uses
Windows, SysUtils, Classes, Contnrs;
type
TStackItem = class
private
FData : Integer;
public
constructor Create(AData : Integer); virtual;
destructor Destroy; override;
property Data : Integer read FData;
end;
TStack = class
private
FItems : TObjectList;
public
constructor Create; virtual;
destructor Destroy; override;
function Pop : Integer;
procedure Push(AItem : Integer);
procedure Clear;
end;
implementation
{ TStackItem }
constructor TStackItem.Create(AData: Integer);
begin
inherited;
FData := AData;
end;
destructor TStackItem.Destroy;
begin
inherited;
end;
{ TStack }
procedure TStack.Clear;
begin
FItems.Clear;
end;
constructor TStack.Create;
begin
inherited;
FItems := TObjectList.Create(True);
end;
destructor TStack.Destroy;
begin
FItems.Free;
inherited;
end;
function TStack.Pop: Integer;
begin
If FItems.Count = 0
Then Raise Exception.Create('Стек пуст')
Else
Begin
Result := (FItems[0] As TStackItem).Data
FItems.Delete(0);
End
end;
procedure TStack.Push(AItem: Integer);
begin
FItems.Insert(0,TStackItem.Create(AItem));
end;
end.
Класс TStackItem полезен для того, что бы было удобно работать, ну и для дальнейшего наращивания.