Forum: Object-Pascal / Delphi-Language
Delphi
by DeddyH,
9. Dez 2011
Gerade das Durchhangeln wollen wir uns doch sparen.
Procedure TForm1.AddElement(Wert: integer);
Var
hlp: PEintrag;
Begin
// Anfang vorhanden ?
If (First = Nil) Then Begin
New(First);
First^.Vorgaenger := Nil; // Der Anfang der Kette hat keinen Vorgänger;
First^.Nachfolger := Nil; // Der Nachfolger ist auch erstmal nicht vorhanden.
Forum: Object-Pascal / Delphi-Language
Delphi
by DeddyH,
9. Dez 2011
Ja eben. Willst Du nun ein neues Element hinzufügen, musst Du nicht mehr von vorn bis hinten die ganze Liste durchgehen, sondern springst gleich zu Last, erstellst das neue Element, weist es Last als Nachfolger zu und machst es dann zum neuen Last.
Forum: Object-Pascal / Delphi-Language
Delphi
by DeddyH,
9. Dez 2011
Du musst Dich einfach von dem Gedanken lösen, dass Du auf eine verkettete Liste irgendwie indiziert zugreifen könntest :zwinker:
Forum: Object-Pascal / Delphi-Language
Delphi
by DeddyH,
9. Dez 2011
Ja klar.
Bei doppelt verketteten Listen macht es auch Sinn, neben First ein Last zu haben, das auf dem letzten Element steht, dann kann man die Liste sowohl von vorn als auch von hinten durchlaufen ;)
Forum: Object-Pascal / Delphi-Language
Delphi
by DeddyH,
9. Dez 2011
Ich habe AddElement mal umgeschrieben:
Procedure TForm1.AddElement(Wert: integer);
Var
hlp, neu: PEintrag;
Begin
// Anfang vorhanden ?
If (First = Nil) Then
Begin
New(First);
First^.Vorgaenger := Nil; // Der Anfang der Kette hat keinen Vorgänger;
Forum: Object-Pascal / Delphi-Language
Delphi
by DeddyH,
9. Dez 2011
Die Liste wird ja nicht benutzt, daran liegt es nicht. Ich habe den Code jetzt mal hier unter XE eingefügt und kompiliert, da kommen einige Warnungen und Hinweise, insbesondere in AddElement.
Forum: Object-Pascal / Delphi-Language
Delphi
by DeddyH,
9. Dez 2011
Dann stepp doch einmal durch und schau, in welcher Zeile der Fehler auftritt. Übrigens: wozu ist eigentlich das Array gut, das wird doch gar nicht benutzt?