Die Funktion, die ich benutze, um der Liste einen neuen Knoten hinzuzufügen, den Fehler "Segmentation fault (core dumped)" erhalten, habe ich das Gefühl, dass ich die Liste falsch referenziereProbleme beim Abrufen meiner verknüpften Liste
void add(Huff ** head, Huff * current, char x)
{
int found = 0;
zu überprüfen, ob die Liste leer ist, setzt neuen Knoten mit dem Hinterkopf
if(current == NULL)
{
Huff * newItem = malloc(sizeof(Huff));
newItem->c = x;
newItem->freq = 1;
newItem->next = NULL;
*head = newItem;
}
zu überprüfen, ob die Knoten den gleichen Wert haben
else
{ while(current != NULL)
{
if(current->c == x)
{
current->freq += 1;
found = 1;
break;
}
}
, wenn sie in die Liste nicht, hinzufügen
if(found == 0)
{
Huff * newItem = malloc(sizeof(Huff));
newItem->c = x;
newItem->freq = 1;
newItem->next = NULL;
current->next = newItem;
}
}
}
Nun erklärt, haben Sie in den Debugger Schritt durch den Code? Welche Linie gibt den Fehler? Bitte zeige Definition von Huff. Wir sind keine Gedankenleser. – OldProgrammer
Wenn 'x' nicht gefunden wird, wird die while-Schleife mit' current == NULL' beendet. Wie erwarten Sie, dass 'current-> next = newItem' ausgewertet wird? 'NULL-> next' verursacht Segmentierungsfehler. – alvits
Oh, und Sie durchlaufen nicht die verkettete Liste in Ihrer 'while' Schleife. Aber ich vermute, es ist ein Copy-Paste-Problem. – alvits