Einzelnen Beitrag anzeigen

xineohp

Registriert seit: 29. Jan 2004
Ort: Heusenstamm
420 Beiträge
 
Delphi 2005 Professional
 
#12

Re: Frage zum Sortieren einer verketteten Liste

  Alt 20. Aug 2004, 19:33
so,

jetzt hab ich 's:

Bei einer einfach verküpften Liste müssen 3! Zeiger verändert werden, du brauchst also zwei Hilfsvariablen.

Delphi-Quellcode:
var
  changed: boolean;
  nav, help1, help2: tListenElement;
begin

  changed := true;
  while changed do // deine Version mit der zweiten Schleife sollte auch funktionieren,
  begin // aber so muss du die Anzahl der Elemente der Liste nicht kennen.
    changed := false;
    nav := root; // Zeiger auf den Anfang setzen
    while not (nav^.next = nil) do // solange wir nicht am Ende sind weiter machen
    begin
      If nav^.name > nav^.next^.name then // vergleichen
      begin
        help1 := nav; // die zwei Elemente vertauschen.
        nav := nav^.next; // man beachte, dass hierzu drei Zeiger geändert werden müssen!
        help2 := nav^.next;
        nav^.next := ´nav^.next^.next;
        help2^.next := help1;
        changed := true;
        If help1=root then root := nav; // falls wir gerade das root-Element geändert haben, root neu setzen
      end;
      nav := nav^.next; // auf zum nächsten Element :)
    end;
  end;

end;
Peter Enenkel
  Mit Zitat antworten Zitat