Originariamente inviato da iz8eej
ammesso che che io non posso modificare il main ? (come ho specificato nel post)

per esempio la funzione:

codice:
int conta_nodi_ric(Tipo_lista l)
 {
  if (l == NULL)
      return 0;
  else
      return conta_nodi_ric(l->Next) + 1;
}
non viene inizializzata ma ritorna il valore esatto come mai ?

grazie
questo funziona perchè la funziona ritorna un valore intero, non deve modificare una variabile già esistente.

Per quanto riguarda la funzione in questione allora deve essere strutturata in un altro modo:

codice:
Tipo_lista elimina_multipli_tre_ric(Tipo_lista l, int *n)
{
 if (l == NULL)
   {
        *n = 0;
        return NULL;
   }
 if (l->Next == NULL)
        {
          if (l->Value % 3 == 0)
           {
            *n = 1;
            free(l);
            return NULL;
           }
          else
           {
            *n = 0;
            return l;
           }
         }
 else
  {
    l->next = elimina_multipli_tre_ric(l->next, n);
    if (l->Value %3 == 0)
      {
                *n = *n+1;
                Tipo_lista temp;
                temp = l;
                l = l->Next;
                free(temp);
      }
    return l;
   }
}
vedi se così va...