бесплатная функция для связанного списка не работает - PullRequest
0 голосов
/ 07 марта 2019

Я вставил свой код функции ниже, чтобы освободить содержимое следующей структуры:

struct LetterFrequencyPair
{
    char character;
    int frequency;
    struct LetterFrequencyPair* next; 
};

Создание и отображение списка не является проблемой и работает нормально.Однако, когда я добрался до свободной функции, ничего не происходит.Чтобы попытаться определить причину проблемы, я добавил в свой код напечатанные операторы шагов.(Посмотрите в функции ниже), чтобы увидеть, сколько кода выполняется.На выходе все, что я получаю, это «Шаг 1» и больше ничего, что может указывать на ошибку после этой строки.Я не уверен, что здесь неверно, так как это тот же формат, который я использовал в другом упражнении со связанным списком.

Пожалуйста, дайте мне знать, если вы заметите, где я ошибся.Также, если вам нужно увидеть весь код (я уверен, что вы не должны этого делать, так как именно здесь есть ошибка), дайте мне знать, и я отредактирую вопрос, чтобы добавить его.:)

 void freeList()
{
    struct LetterFrequencyPair* temp;
    temp = root;
    if (temp == NULL)
        {
            printf("List is empty.\n");
        }
    else
    {
        printf("step 1\n");
        while(temp != NULL);
        {
            printf("Step 2.\n");
            struct LetterFrequencyPair* nexttemp = temp->next;
            printf("step 3\n");
            free(temp);
            printf("Step 4\n");
            temp = nexttemp;
            printf("5\n");          
        }
        printf("\n");
    }
}

1 Ответ

0 голосов
/ 07 марта 2019

Ошибка была замечена Александром Дмитриевым (он прокомментировал вопрос).

Ошибка была;в строке while(temp != NULL);

Удалено;и функция теперь работает нормально.

...