Thema: Delphi einfach verkettete Liste

Einzelnen Beitrag anzeigen

dominikkv

Registriert seit: 30. Sep 2006
Ort: Gundelfingen
1.109 Beiträge
 
Delphi 2007 Professional
 
#3

Re: einfach verkettete Liste

  Alt 31. Dez 2007, 12:11
Du solltest deinen Quellcode mehr formatieren und dich auch dran halten, dann wird das debuggen leichter.
Außerdem ist es sinnvoll Zeiger mit einem P zu benennen (also P_Zeiger anstatt t_Zeiger).

So und nun genug Oberlehrerisch

Du rufst immer
Delphi-Quellcode:
  akt^.inhalt:='ein listen Element';
  akt^.Position:=2;
auf, egal ob schon ein Kopf da ist oder nicht.
Kann sein das das der Fehler ist.

Ich würde das so machen:
Delphi-Quellcode:
procedure TForm1.btnNeuClick(Sender: TObject);
var
  PNeu : P_Zeiger;
  PDummy: P_Zeiger;
begin
  New(PNeu);
  
  if (Kopf = NIL) then
    begin
      PNeu^.Next := NIL;
      PNeu^.inhalt := 'Das ist das erste Leisenelement';
      PNeu^.Position := 1;

      Kopf := PNeu;
      Aktuell := PNeu;
    end else begin
      PNeu^.next := Aktuell^.next;
      PNeu^.inhalt := 'ein listen Element';
      PNeu^.Position := Succ(Aktuell^.Position);
       
      Aktuell^.Next := PNeu;
      
      PDummy := PNeu;
      while PDummy^.next <> nil do
        begin
          PDummy := PDummy^.next;
          Inc(PDummy^.Position);
        end;
    end;
   
    if (PNeu^.next = nil) then
      Ende := PNeu;
     
    p_Ausgabe_Kopf(kopf^);
    p_Ausgabe_Aktuell(Aktuell^);
    p_Ausgabe_Ende(Ende^);
end;
Dominik
Wer anderen eine Grube gräbt, hat ein Gruben-Grab-Gerät!
  Mit Zitat antworten Zitat