Hallo zusammen.
Ich habe eine sehr konkrete Frage, weshalb nicht viel Code gebraucht wird. Ich bewege mich im Raum der Sprache C.
Ich habe eine mehrfach verkettete Liste mit Elementen, die jeweils einen Pointer auf ihren Vorgänger und Nachfolger haben. Das Erste hat dann folglich die 0 als Vorgänger und das letzte Element die 0 als Nachfolger.
Sei *ptr ein Pointer auf irgend ein beliebiges Element, sagen wir einfach: ptr zeigt auf das 2. Element in der Verkettung.
Wenn ich nun durch Umlenken der Vor-und Nach-Pointer der Elemente das 2. und das 3. Element tausche (das Tauschen funktioniert einwandfrei) dann zeigt ptr auf das 3. Element. Die Frage ist warum?
Meine Überlegung:
ptr zeigt auf die Adresse (z.b. 0x2 für 2.Element) und greift durch den komponentenzugriffsoperator -> auf die einzelnen vor-und nach-pointer zu. ptr greift durch die Adresse zum Element, das heißt, man tauscht nicht die Elemente in den Speicherzellen. Man koordiniert lediglich die Pointer so um, dass das vorher 2.Element an 0x2 nun das 3. wird.
Ich merke, dass ich durch das Selbsterklären gerade zur Lösung gekommen bin, logisch. Heißt das im Umkehrschluss: Egal wie viele Pointer ich auf Stelle 0x2 zeigen lasse, werden ausnahmslos alle "hochgezählt" in der Kette.
Kann mir dennoch ein C-Veteran diesen Gedankengang validieren?
Danke im Voraus.