Einer einfach verketteten Liste ein belibiges Element löschen...
-
Hallo,
ich habe gerade mal eine Frage. Ich habe eine einfach verkettete Liste programmiert. Und nun wollte ich eine Funktion einbauen, bei der ich ein beliebiges Element löschen kann.Ich hab einfach den Zeiger der auf das nächste Element zeigt, auf das übernächste Element zeigen lassen. Ja das Problem ist ja, dass der Speicherplatz hierbei noch reserviert bleibt. Wie gebe ich den wieder frei von dem einzelnen Element?
while (pos->next != NULL) { if (pos->next->wert == val) { pos->next = pos->next->next; } pos=pos->next; }Grüße,
Cyrill
-
Per 'new' reservierten Speicher gibt man per 'delete' frei. Ich nehme an, das brauchst Du hier.
if (pos->next->wert == val) { Datentyp* old = pos->next; pos->next = pos->next->next; delete old; }
-
Ok ich hatte die ganze Zeit irgendwie dies so probiert:
if (pos->next->wert == val) { pos->next = pos->next->next; delete pos->next; }Also brauch ich ein Hilfszeiger.
Besten Dank.
--- Nachtrag ---
Naja irgendwie bekomme ich immer diesen Fehler hier:1>liste.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: __thiscall listenelement::~listenelement(void)" (??1listenelement@@QAE@XZ)" in Funktion ""public: void * __thiscall listenelement::`scalar deleting destructor'(unsigned int)" (??_Glistenelement@@QAEPAXI@Z)".
1>Übung.exe : fatal error LNK1120: 1 nicht aufgelöste externe Verweise.
-
Ok hat sich erledigt. Hätte den destruktor in die CPP schreiben sollen

Klappt alles gut.. Danke