Вернуть связанный узел списка и затем удалить его - PullRequest
0 голосов
/ 25 марта 2019

Ниже приведена написанная мной функция, которая пересекает связанный список и возвращает узел с наименьшим значением «частоты». Однако в основном коде я называю это дважды подряд. Как это сделать, чтобы код возвращал узел, а затем удалял его, чтобы при повторном запуске он не возвращал тот же узел, что и раньше? Что меня смущает, так это то, как я могу удалить узел, а затем вернуть его, если он больше не существует.

struct LetterFrequencyPair* lowestF()
{
    int val = 1000;
    struct LetterFrequencyPair* temp;
    struct LetterFrequencyPair* lowest = malloc(sizeof(struct 
LetterFrequencyPair));
    temp = root;
    if (temp == NULL)
    {
        printf("List is empty.\n");
    }
    else
    {
        while (temp != NULL)
        {
            if (temp->frequency < val)
            {
                lowest->character = temp->character;
                lowest->frequency = temp->frequency;
                val = lowest->frequency;
            }
            temp = temp->next;
        }
        printf("%c\t%d\n", lowest->character, lowest->frequency);
        return lowest;
}
...