| 

.NET C# Java Javascript Exception

4
Woran kann es liegen, dass die ungeraden Werte aus der Liste als Struktur gelöscht werden, aber für die gelöschten Werte dann die Speicheradresse in der Liste steht?
void filterEven(list *l){
list old = *l;
list current = (*l)->next;
//Abfrage ob die Liste leer ist
if(*l == NULL) printf("Die Liste ist leer");
else
//Durchlaufe die Liste solange bis current == NULL ist
while(current != NULL){
//Überprüfe ob der Wert vom Current Element ungerade ist
if(current->value % 2 != 0){
//Weise old->next den Wert von current->next zu
old->next = current->next;
//Gebe den Speicherplatz von Current frei
free(current);
//Current erhält den Wert von old->next
current = old->next;
}
else
//Gehe zum nächsten listenelement
current = current->next;
old = old->next;
}
News:
10.06.2018
SamuelP9 21 1
Das liegt daran, dass die Werte an sich nicht in der Liste gelöscht werden, nur der Verweis darauf. Kann man fast mit einem Dateisystem vergleichen: da wird quasi auch nur der Verweis auf die Datei gelöscht und nicht die Datei an sich.
muffi 13.06.2018
Ich bin zwar kein C++-Spezialist, aber aus meinen Erfahrungen unter .NET würde ich das Ganze mit einer Liste angehen, die zunächst leer ist und dann mit den ausgewählten Werten gefüllt wird. Zuletzt kann die Liste zugewiesen werden oder besser als Rückgabewert bereitgestellt werden.
edvservice vor 4h