STAMPA LISTA

di il
2 risposte

STAMPA LISTA

Ciao a tutti, devo implementare una funzione che mi permetta di stampare gli elementi di una lista al contrario. Sul web, ho trovato questa soluzione:
void StampaListaRovesciata(TipoLista l) {
  if(l==NULL)
    return;

  StampaListaRovesciata(l->next);
  printf("%d ", l->val);
}
e mi viene detto: se StampaListaRovesciata(l->next) stampa dall'ultimo elemento al secondo, per stampare dal secondo al primo basta eseguire questa istruzione e poi una stampa del primo elemento con printf("%d ", l->val). Qualcuno sa spiegarmi in maniera più chiara come si comporta questa funzione?

2 Risposte

  • Re: STAMPA LISTA

    E' una funzione ricorsiva.

    Quando la chiami la prima volta, chiama sè stessa spostandosi al prossimo elemento della lista.
    E continua a spostarsi al prossimo elemento senza eseguire la printf. Solo appena arriva all'elemento NULL allora i return permettono l'esecuzione di tutte le printf. Questa esecuzione, ovviamente, avverrà dall'ultimo elemento fino al primo.
  • Re: STAMPA LISTA

    GRAZIE
Devi accedere o registrarti per scrivere nel forum
2 risposte