Кто-нибудь знает, что не так с этой рекрусирующей функцией? Он не удаляет все узлыудаление всех узлов в связанном списке
struct contact
{
char FirstName[41];
char LastName[41];
int id;
struct contact *next;
};
void ClearList (struct contact *person)
{
struct contact *temp = person;
if (person == NULL) return;
else
{
person = person->next;
free(temp);
ClearList(person);
}
}
это моя главная функция
void main()
{
struct contact *person = malloc(sizeof(struct contact));
strcpy (person->FirstName, "John");
strcpy (person->LastName, "Doe");
person->id = 10;
person->next = malloc(sizeof(struct contact));
strcpy (person->next->FirstName, "Will");
strcpy (person->next->LastName, "Smith");
person->next->id = 20;
person->next->next = NULL;
PrintList(person);
ClearList(person);
PrintList(person);
}
, когда я звоню после вызова перечень печати ClearList он все еще печатает несколько беспорядочных питания, как это исправить?
Каково определение 'struct contact'? – horns
Вы пробовали переходить через код по строкам в отладчике? И как вы знаете, что он не удаляет все узлы? –
'void ClearList (struct contact * person) {if (person) {ClearList (person-> next); free (person);}' – BLUEPIXY