Вы передаете указатель, который ни на что не указывает: clearRecursively(&nextNode, endNode);
Помимо присвоения указателей на NULL
не удалит память, на которую они указывают - free(POINTER_NAME)
для этого.
Ясно, что вы имеете в виду удаление - поскольку полный код не был предоставлен, вот способ (например, цель) сделать это с предположением, что это односвязный список:
//THIS TRAVERSES DOWN THE LINKED-LIST AND THEN DELETES THAT LAST NODE
//RECURSIVELY IT DELETES THE ENTIRE LIST
void clear_recursively(LIST **head)
{
if(*head!=NULL)
{
clear_recursively(&((*head)->next));
free(*head);
*head=NULL;
}
}
Вам просто нужно передать адрес указателя head
(указатель на первый узел), и он будет завершен.
Если под очисткой вы подразумеваете просто установить поле данных всего связанного списка к некоторому значению тогда:
void clear_recursively(LIST *head)
{
if(head!=NULL)
{
clear_recursively(head->next);
head->data = //SOME VALUE;
}
}