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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.