Que tal, aquí te dejo el siguiente código, es para hacer una lista con punteros, es el mismo principio que las pilas de aquí puedes guiarte, no recuerdo de donde saqué este codigo y no se si esté todo correcto pero puede servirte
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
BtCargar: TButton;
BtMostrar: TButton;
BtDestruir: TButton;
BtSalir: TButton;
Memo1: TMemo;
EdMarca: TEdit;
EdModelo: TEdit;
EdYear: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
BtAgregar: TButton;
Procedure LoadList(Sender:Tobject);
Procedure ShowList(Sender:Tobject);
Procedure DestroyList(Sender:Tobject);
procedure BtAgregarClick(Sender: TObject);
procedure BtMostrarClick(Sender: TObject);
procedure BtCargarClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
type
CarPtr=^CarRec;
CarRec=Record
Make,Model:String[20];
Year:word;
NextRec:CarPtr;
end;
var
FirstCar:CarPtr;
Procedure InitCarArray;
begin
FirstCar:=Nil;
end;
Procedure AddCar(Make,Model:String; Year:Word);
var
CurrentRec:CarPtr;
Begin
If FirstCar=nil then
begin
New(CurrentRec);
FirstCar:=CurrentRec;
end
Else
begin
CurrentRec:=FirstCar;
While CurrentRec^.NextRec<>nil do
CurrentRec:=CurrentRec.NextRec;
New(CurrentRec^.NextRec);
End;
CurrentRec^.Make:=Make;
CurrentRec^.Model:=Model;
CurrentRec^.Year:=Year;
CurrentRec.NextRec:=Nil;
end;
Procedure Tform1.LoadList(Sender:Tobject);
begin
InitCarArray;
AddCar('Chevy','Camaro',1977);
AddCar('AMC','Pacer',1979);
AddCar('Ford','Perfect',1975);
AddCar('Toyota','Camry',1995);
end;
Procedure Tform1.ShowList(Sender:Tobject);
var CurrentRec:CarPtr;
begin
Memo1.Lines.Clear;
If FirstCar=nil then exit;
CurrentRec:=FirstCar;
While CurrentRec<>nil do
begin
Memo1.Lines.Append(IntToStr(CurrentRec.Year)+' '+CurrentREc.Make+' '
+CurrentRec.Model);
CurrentRec:=CurrentRec.NextRec;
end;
end;
Procedure Tform1.DestroyList(Sender:TObject);
var CurrentRec:CarPtr;
begin
If FirstCar<>nil then
begin
repeat
currentRec :=FirstCar.NextRec;
Dispose(FirstCar);
FirstCar:=CurrentRec;
until FirstCar=nil;
end;
end;
procedure TForm1.BtAgregarClick(Sender: TObject);
begin
AddCar(EdMarca.Text,EdModelo.Text,StrToInt(EdYear.Text));
end;
procedure TForm1.BtMostrarClick(Sender: TObject);
begin
Form1.ShowList(nil);
end;
procedure TForm1.BtCargarClick(Sender: TObject);
begin
Form1.LoadList(nil);
end;
end.