Thema: Prism Liste mit Zeigern

Einzelnen Beitrag anzeigen

Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.767 Beiträge
 
Delphi 10.4 Sydney
 
#8

Re: Liste mit Zeigern

  Alt 21. Apr 2008, 20:23
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
Klaus
  Mit Zitat antworten Zitat