Elemente in linearer Liste tauschen



  • Hallo zusammen,

    ich mache mir über folgende Funktion Gedanken. Ich habe eine einfache lineare Liste, also eine LinkedList, in der jedes Element seinen Nachfolger kennt. Nun bekomme ich ein Element aus dieser Liste und möchte es mit dem übernächsten vertauschen.

    Angenommen wir haben die folgende Liste:

    a -> b -> c -> d - > e

    und meine Tauschfunktion bekommt b als Parameter. Dann soll folgendes geschehen:

    a -> d -> c -> b -> e

    Zuerst dachte ich, dass dies ganz einfach ist, doch jetzt bin ich der Auffassung, dass dies nicht geht. Zwar sind alle Pointer umzubiegen, doch ich schaffe es niemals, dass "a" auf "d" zeigt, da ich "a" nicht habe.

    Ich müsste also den Inhalt von d in b und umgekehrt verlagern. Das ist zwar nicht so schön, aber ich sehe keine andere Möglichkeit.

    Gibt es wirklich keine oder übersehe ich eine??

    Vielen Dank
    lg, freakC++



  • Struktur der Liste und dere Inhalt entkoppeln. Ansonsten: Ohne Code nix los.



  • Wie kannst du a nicht haben? Ohne a hast du keinen Startpunkt, kannst also den Rest überhaupt nicht finden oder überseh ich grad was grundlegendes?
    Ansonsten, warum Zeiger umbiegen? Vertausch doch den Inhalt, wie du es dir am Schluss schon gedacht hast. Ich find das sinnvoller als die Zeiger umzubiegen.



  • Weitere Alternativen:

    - Doppelt verkettete Liste
    - Vorgaenger suchen

    Diamond schrieb:

    [...] oder überseh ich grad was grundlegendes?

    Ja, nur in seinem Beispiel ist der Vorgänger das Startelement.


Anmelden zum Antworten