Delphi-Quellcode:
type Pzeiger= ^Tmensch;
Tmensch = record
n:string;
z:pzeiger; // hier sollte die Adresse des nächsten Elementes stehen
end;
var anker:pzeiger;
procedure TForm1.Button1Click(Sender: TObject);
var pak,pvor,pan:pzeiger;
begin
if anker.z=nil then // hier fragst Du ob das AnkerElement einen Zeiger auf das nächste Element hat
begin
new(pak);
anker^.z:=addr(pak);
pak^.n:=edit1.text;
pak^.z:=nil;
end
meiner Meinung nach wäre es so besser:
Delphi-Quellcode:
type Pzeiger= ^Tmensch;
Tmensch = record
n:string;
naechster:pzeiger;
end;
var anker:pzeiger;
procedure TForm1.Button1Click(Sender: TObject);
var pak,pvor,pan:pzeiger;
begin
if anker = nil then // gibt es schon ein erstes Element?
begin
new(pak);
anker := pak ; //das erste Element hat die Adresse von pak
pak^.n:=edit1.text;
pak^.naechster:=nil; // es gibt noch kein neues Element dager pak^.naechster := nil
end
Zum Anhänge suchst Du dir das Element dessen Nachfolger nil ist:
Delphi-Quellcode:
procedure TForm1.addElement(s:String);
var
list : pzeiger;
dummy : pzeiger;
begin
list := anker;
while list^.naechster <> nil do
list := list^.naechster;
// hier hat list^.naechster die Adress nil
// damit hat list die Adresse des letzten Elementes
new(dummy);
dummy^.n:=string;
dummy ^.naechster:=nil;
list^.naechster := dummy;
end;
Grüße
Klaus