I want to do a recursive function to deallocate the memory of each block of the list, but when I print it after using the function, it loops and memory addresses are printed when I ask to print (the correct thing is not to print anything).
Declaration on main: on the list;
Call on main: end_recursive (& list);
no * list is just a pointer to the first element (block) of the list.
Below two versions of the same function, the two are giving the same problem:
Main
int main()
{
no *ini; //é um ponteiro para um bloquinho (inicio da lista)
elem x;
int erro;
cria(&ini);
x = 2;
inserir(&ini, &x, &erro);
x = 3;
inserir(&ini, &x, &erro);
x = 8;
inserir(&ini, &x, &erro);
imprimir(ini);
finaliza_recursivo(&ini);
return 0;
}
Functions
void cria(no **inicio)
{
*inicio = NULL;
}
void finaliza_recursivo(no **inicio)
{
no *P;
P = *inicio;
if(P != NULL)
finaliza_recursivo(&P->prox);
free(P);
}
void finaliza_recursivo(no **inicio)
{
if(*inicio != NULL)
finaliza_recursivo(&(*inicio)->prox);
free(*inicio);
}