Probleme mit Funktion in C

Gast #4812873
Lesenswert?

Hallo,

bei der folgenden Funktion sieht der C Compiler einen Fehler.
--> error: dereferencing pointer to incomplete type
1
void*  DeleteNode(node list)
2
{
3
  node tmp   = list->next;
4
  list->next = list->next->next; <-- Der Fehler liegt in dieser Zeile
5
  free(tmp);
6
  return list;
7
}

Diese Meldung macht auch Sinn, da das next Element von next noch nicht 
existiert. Allerdings brauche ich diese Funktion um ein Element in einer 
Liste zu löschen.
Gast #4812891
Lesenswert?

By the way: Ziemlich irreführende Variablennamenwahl.

1. die Variable "list" ist ein Knoten einer Liste. Dann nenn sie 
"element" oder "listNode", aber nicht "list".

2. Und auch der Funktionsnamen ist irreführend, denn du löschst nicht 
den Node, sondern das Element hinter dem übergebenen "node" (node->next

3. Du prüfst nicht ob in node->next überhaupt eine weitere Knoten 
gespeichert ist. Der nächste Absturz ist nicht fern

...
Gast #4812915
Lesenswert?

wenn list->next->next nicht existiert dann ist er doch mit NULL 
initialisiert oder.
also list->next = NULL wenn kein weiteres Element in der liste ist und 
es wird list->next->next wen nein weiteres Element da ist.

Du solltest wirklich die node Definition und die Compilermeldung zeigen.
Wenn Zeiger NULL sein können so muss das abgefangen werden sonst gibt es 
einen Crash. Ich denke du hast einen Denkfehler und da passt noch mehr 
nicht.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren