Hallo!
Ich versuche gerade in C eine Funktion zu schreiben, die in einer einfach verketten Liste die jeweiligen Nachbarelemente vertauscht. Sie soll also beispielsweise aus: 1 2 3 4 5 6 => 2 1 4 3 6 5 machen. Ohne auf die Abbruchbedingungen (Liste hat weniger als zwei Elemente) einzugehen, oder auch die Schleife, verzweifel ich schon daran, die ersten beiden Elemente zu vertauschen.
Natürlich will ich nicht den Inhalt tauschen, sondern die Zeiger auf die Nachfolgeelemente "verbiegen". Also startzeiger auf das Listenelement zwei von dort auf Listenelement 1 und von dort auf 3. Mein Problem (außer meinem generellen Problem mit Zeigern) ist, dass ich zwar schaffe den Zeiger vom ersten Element auf das dritte zu setzen, dann ja aber nicht mehr zum zweiten komme, weil dann ja kein Zeiger mehr darauf vorhanden ist.
Zwischndurch einmal die Typdefinition für unsere Listenelemente, damit wir über das gleiche Reden:
Ich dachte ich nehme mir in meiner Funktion Hilfszeiger (ungefähr so.:
zeiger_typ zwei;
zwei = eins->next; ),damit ich einen Zeiger aufs zweite Element habe, damit ich dann von start auf 2 und von dort auf 1 komme. Aber so scheint das nicht zu funktionieren (mit meinem Hilfszeiger).
Sieht jemand, was da schief läuft? Wie kann ich denn einen Zeiger auf 2 festhalten?
Ich hoffe mein Problem ist verständlich geworden (und natürlich auch, dass mir jemand Helfen kann...)
Danke schon mal fürs Rein- und Mitdenken!
Ich versuche gerade in C eine Funktion zu schreiben, die in einer einfach verketten Liste die jeweiligen Nachbarelemente vertauscht. Sie soll also beispielsweise aus: 1 2 3 4 5 6 => 2 1 4 3 6 5 machen. Ohne auf die Abbruchbedingungen (Liste hat weniger als zwei Elemente) einzugehen, oder auch die Schleife, verzweifel ich schon daran, die ersten beiden Elemente zu vertauschen.
Natürlich will ich nicht den Inhalt tauschen, sondern die Zeiger auf die Nachfolgeelemente "verbiegen". Also startzeiger auf das Listenelement zwei von dort auf Listenelement 1 und von dort auf 3. Mein Problem (außer meinem generellen Problem mit Zeigern) ist, dass ich zwar schaffe den Zeiger vom ersten Element auf das dritte zu setzen, dann ja aber nicht mehr zum zweiten komme, weil dann ja kein Zeiger mehr darauf vorhanden ist.
Zwischndurch einmal die Typdefinition für unsere Listenelemente, damit wir über das gleiche Reden:
Ich dachte ich nehme mir in meiner Funktion Hilfszeiger (ungefähr so.:
zeiger_typ zwei;
zwei = eins->next; ),damit ich einen Zeiger aufs zweite Element habe, damit ich dann von start auf 2 und von dort auf 1 komme. Aber so scheint das nicht zu funktionieren (mit meinem Hilfszeiger).
Sieht jemand, was da schief läuft? Wie kann ich denn einen Zeiger auf 2 festhalten?
Ich hoffe mein Problem ist verständlich geworden (und natürlich auch, dass mir jemand Helfen kann...)
Danke schon mal fürs Rein- und Mitdenken!