Witam, mam za zadanie opracować program usuwający z listy wszystkie wystąpienia wartości x w wersji rekurencyjnej. Do tej pory udało mi się napisać taki kod jednakże wygląda na to iż pętla jest nieskończona a mam brak pomysłów.
Funkcja UPEL(l) usuwa pierwszy element listy.
Poniższa funkcja działa w taki sposób iż zaczynam sprawdzanie i usuwanie od 2 elementu , a następnie zajmuje się głową listy.
void usunpowR(lista *l, int n)
{
lista r=*l;
lista tmp;
while((*l)->nast)
{
if((*l)->nast->klucz != n)
usunpowR(&(*l)->nast, n);
else
{
tmp=(*l)->nast;
(*l)->nast=tmp->nast;
free(tmp);
(*l)=(*l)->nast;
}
}
if(r->klucz == n && r->nast==0)
free (r);
else if(r->klucz == n && r->nast!=0)
{
UPEL(l);
}
}