[C] stampare una lista all'inverso

di il
17 risposte

17 Risposte - Pagina 2

  • Re: [C] stampare una lista all'inverso

    Non mi interessa nessun dettaglio ma in un forum non si scrivono post una volta ogni anno. Non si usa così un forum.

    Crea un nuovo thread e spiega meglio cosa non comprendi, perché non si è capito

  • Re: [C] stampare una lista all'inverso

    21/07/2023 - oregon ha scritto:


    Non mi interessa nessun dettaglio ma in un forum non si scrivono post una volta ogni anno. Non si usa così un forum.

    Crea un nuovo thread e spiega meglio cosa non comprendi, perché non si è capito

    Va bene seguirò senza dubbio il tuo consiglio!

  • Re: [C] stampare una lista all'inverso

    Scusate se intervengo solo ora, è da un po' che leggo, e solo adesso mi è venuta l'idea di unirmi, spero di non star violando nessuna regola.

    La funzione non inverte la lista (fare una funzione simile sarebbe molto più lungo), ma scrive gli elementi della lista a partire dall'ultimo. Quindi di fatto scrive l'ultimo elemento, poi il penultimo e via così, senza modificare quanto scritto in memoria. Per fare questo alla finzione viene passato il puntatore a un elemento di lista (inizialmente al primo, ma vedremo che la cosa cambierà). Se quell'elemento non esiste (quindi il puntatore è null) la funzione non fa nulla, e ritorna a qualsiasi cosa la abbia chiamata. Se invece quell'elemento esiste, ne esisterà un successivo, quindi la funzione prima richiama se stessa, passandosi l'indirizzo di quel successivo, e poi, una volta che la lista è stata finita e che tutte le funzioni successive sono finite, stampa il numero che le tocca stampare, e termina, permettendo alla chiamante di continuare.

     Esempio: lista di 2 elementi. Chiamo la funzione puntando al primo. Non è nullo, quindi la prima chiamata chiama la seconda puntando al secondo elemento. Non è nullo, quindi la seconda chiamata chiama una terza volta la funzione, passandogli il successivo del secondo elemento. Visto che la lista è di 2 elementi, il successivo del secondo è NULL, quindi la terza chiamata non fa nulla, e la palla ritorna alla seconda. La seconda, dopo aver chiamato la terza, scrive il secondo numero, e passa la palla alla prima chiamata, la quale scrive il primo numero

Devi accedere o registrarti per scrivere nel forum
17 risposte