c++ - Element in eine Liste einfügen
-
Hallo Leute
Mein Problem ist, dass ich best. Daten zu meiner Liste an einer best. Stelle hinzufügen will.
Der Wert wert_neu soll vor dem Wert vor_wert eingefügt werden. Jedoch klappt es bei mir einfach nicht, das überhaupt ein
neuer Wert eingefügt wird. Wenn ich Werte hinten anfügen will, klappt dies ohne Probleme.struct TListenKnoten { int data; TListenKnoten* next; TListenKnoten* prev; }; void in_liste_einfuegen(TListenKnoten*& anker, int wert_neu, int vor_wert) { // der neue Knoten der in die Liste eingefügt werden soll TListenKnoten* neuer_wert = new TListenKnoten; neuer_wert->data = wert_neu; // Wird ausgeführt, wenn die Liste leer ist if (anker == nullptr) { hinten_anfuegen(anker, wert_neu); } // wenn die Liste min. ein element hat else { TListenKnoten* ptr = anker; while (ptr->next != nullptr ) { if(ptr->next->data == vor_wert) { neuer_wert->next = ptr->next; ptr = neuer_wert; break; } ptr = ptr->next; } // wenn der wert in der Liste nicht vorkommt if (ptr == nullptr) { hinten_anfuegen(anker, wert_neu); } } }
Ich danke euch schon mal im Vorraus
-
Das ist C mit nullptr. Warum?
ptr = neuer_wert;
und dann wird die Funktion verlassen. Wer kennt dann noch neuer_wert?
-
Die Idee ist, dass ptr dann auf den knoten neuer_wert zeigt und mit
neuer_wert->next = ptr->next;
der pointer von neuer wert auf den Knoten wo vor_wert gespeichert ist.
ja ich weiß ich könnte einfach die standard Funktionen von cstring verwenden, mach das aus
reinen Übungszwecken.
-
@jojo sagte in c++ - Element in eine Liste einfügen:
Die Idee ist, dass ptr dann auf den knoten neuer_wert
Ja. Und wie lange tut er das? Wie lange existiert ptr? Was hat ptr mit der Liste zu tun?
ja ich weiß ich könnte einfach die standard Funktionen von cstring verwenden,
Was?
-
-
ptr soll nur dafür gedacht sein mich durch die Liste zu hangeln.
-
@Th69 ja stimmt , du hast recht, das muss ja der Pointer sein der auf neuer_wert zeigt.
-
@jojo sagte in c++ - Element in eine Liste einfügen:
ptr soll nur dafür gedacht sein mich durch die Liste zu hangeln.
So langsam musst du mal anfangen zu denken.
Über prev hast du dir ja noch gar keine Gedankrn gemacht.