und zwar habe ich eine Frage zum doppelt verketteten Ring in C bzw. C++.
Zunächst möchte ich dem Ring ein neues Element hinzufügen.
Wir gehen davon aus, dass wie bei einem Ring üblich, das letzte Element gleichzeitig auch mit dem ersten Element verbunden ist und nicht wie bei einer Liste, ein Anfang und Ende existiert.
Konkret besteht mein Problem darin, die Zeiger der Elemente (*next und *prev) umzustellen, sobald dem Ring ein neues Element hinzugefügt wird.
Konkret geht es um die Methode "Hinzufügen", bei der ich die Zeigersetzung nicht verstehe.
void einfuegen(wert_typ **s1, wert_typ **w){//uebergebener Block wird am Anfang des Ringes eingefuegtif(*s1==NULL)// Leere Liste?*s1=*w;//Zeitpunkt 2else//Einfuegen am Anfang der Liste{//Next-Verkettung #########################################(*w)->next =*s1;*s1=(*w);(*w)=(*s1)->next;(*w)=(*w)->prev;(*w)->next=(*s1);//Zeitpunkt 3//Prev-Verkettung#############################################(*w)=(*s1);(*w)=(*w)->next;//auf 2.Block(*s1)->prev=(*w)->prev;(*w)->prev =(*s1);}//Zeitpunkt 4*w=NULL;}//einfuegen
Jedes Element (Node) hat ja einen previous Zeiger auf das vorherige Element und einen next Zeiger auf das folgende Element.
Ich verstehe allerdings die Zeigersetzung in der obigen Methode "Hinzufügen" nicht.
Kann mir hier jemand die Zusammenhänge erklären, wieso diese Zeiger so gesetzt wurden?
Bei **s1 handelt es sich um den Startzeiger und bei '**w um den Zeiger auf das Element, welches neu hinzugefügt werden soll.
Frage
wisdomsoz
Hallo Leute,
und zwar habe ich eine Frage zum doppelt verketteten Ring in C bzw. C++.
Zunächst möchte ich dem Ring ein neues Element hinzufügen.
Wir gehen davon aus, dass wie bei einem Ring üblich, das letzte Element gleichzeitig auch mit dem ersten Element verbunden ist und nicht wie bei einer Liste, ein Anfang und Ende existiert.
Konkret besteht mein Problem darin, die Zeiger der Elemente (*next und *prev) umzustellen, sobald dem Ring ein neues Element hinzugefügt wird.
Konkret geht es um die Methode "Hinzufügen", bei der ich die Zeigersetzung nicht verstehe.
Jedes Element (Node) hat ja einen previous Zeiger auf das vorherige Element und einen next Zeiger auf das folgende Element.
Ich verstehe allerdings die Zeigersetzung in der obigen Methode "Hinzufügen" nicht.
Kann mir hier jemand die Zusammenhänge erklären, wieso diese Zeiger so gesetzt wurden?
Bei **s1 handelt es sich um den Startzeiger und bei '**w um den Zeiger auf das Element, welches neu hinzugefügt werden soll.
Link zu diesem Kommentar
Auf anderen Seiten teilen
4 Antworten auf diese Frage
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.