Функция, которую я использую для добавления нового узла в список, продолжаю получать ошибку «Ошибка сегментации (сбрасывание ядра)», мне кажется, что в какой-то момент я неправильно ссылаюсь на списокПроблемы с получением связанного списка для работы
void add(Huff ** head, Huff * current, char x)
{
int found = 0;
проверки, чтобы увидеть, если список пуст, устанавливает новый узел в голову
if(current == NULL)
{
Huff * newItem = malloc(sizeof(Huff));
newItem->c = x;
newItem->freq = 1;
newItem->next = NULL;
*head = newItem;
}
проверки, чтобы увидеть, если узлы имеют одинаковое значение
else
{ while(current != NULL)
{
if(current->c == x)
{
current->freq += 1;
found = 1;
break;
}
}
, если они не являются, добавить в список
if(found == 0)
{
Huff * newItem = malloc(sizeof(Huff));
newItem->c = x;
newItem->freq = 1;
newItem->next = NULL;
current->next = newItem;
}
}
}
Ну, вы шаг через код в отладчике? Какая линия дает ошибку? Прошу показать определение Хаффа. Мы не читатели. – OldProgrammer
Когда 'x' не будет найден, он выйдет из цикла' while' с 'current == NULL'. Как вы ожидаете оценки 'current-> next = newItem'? «NULL-> next» вызовет ошибку сегментации. – alvits
О, и вы не пересекаете связанный список в цикле 'while'. Но я предполагаю, что это проблема с копией. – alvits