Ниже приведена написанная мной функция, которая пересекает связанный список и возвращает узел с наименьшим значением «частоты». Однако в основном коде я называю это дважды подряд. Как это сделать, чтобы код возвращал узел, а затем удалял его, чтобы при повторном запуске он не возвращал тот же узел, что и раньше? Что меня смущает, так это то, как я могу удалить узел, а затем вернуть его, если он больше не существует.
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;
}