la mia domanda è: se facciamofine->prossimo = nuovo_nodo
, e poi fuori da elsefine = nuovo_nodo
; Non perderemmo ciò che abbiamo inserito in precedenza con fine-> prossimo = nuovo_nodo , poiché il nuovo valore di fine è nuovo_nodo e nuovo_nodo->prossimo è uguale a NULL?
- siamo nel main e abbiamo inizio e fine che valgono NULL
- inseriamo un nuovo elemento in coda con insertCoda(inizio, fine, 1)
- siamo nella funzione insertCoda e creiamo nuovo_nodo che, per il momento, sta per i cavoli suoi slegato dal resto
- dato che la coda è vuota cambiamo inizio e fine (gli stessi del main) in modo tale che siano nuovo_nodo (i.e., puntano alla stessa cosa)
- siamo nel main e abbiamo inizio e fine (variabili distinte) che sono uguali (dato = 1 e prossimo = NULL)
- inseriamo un nuovo elemento in coda con insertCoda(inizio, fine, 2)
- siamo nella funzione insertCoda e creiamo nuovo_nodo che, per il momento, sta per i cavoli suoi slegato dal resto
- dato che la coda non è vuota, facciamo fine->prossimo = nuovo_nodo
- visto che fine e inizio puntano alla stessa cosa, ora anche inizio->prossimo = nuovo_nodo
- cambiamo fine = nuovo_nodo (i.e., gli assegnamo un nuovo valore)
- siamo nel main e abbiamo inizio e fine che hanno i valori che abbiamo appena discusso
- inseriamo un nuovo elemento in coda con insertCoda(inizio, fine, 3)
- siamo nella funzione insertCoda e creiamo nuovo_nodo che, per il momento, sta per i cavoli suoi slegato dal resto
- dato che la coda non è vuota, facciamo fine->prossimo = nuovo_nodo
- visto che fine e inizio->prossimo erano la (a.k.a, puntavano alla) stessa cosa, ora anche inizio->prossimo->prossimo = nuovo_nodo
- cambiamo fine = nuovo_nodo
Ora che abbiamo fatto tutte queste considerazioni, per rispondere in modo più diretto alla tua domanda, non perdiamo ciò che abbiamo inserito in precedenza perché
- inizio e fine sono due variabili mentre inizio->prossimo e fine->prossimo sono altre due variabili
- inizio e fine dentro al main sono proprio le stesse variabili chiamate inizio e fine dentro insertCoda (per via del puntatore al riferimento)
- con inizio = nuovo_nodo, fine->prossimo = nuovo_nodo e fine = nuovo_nodo stiamo assegnando un valore, non stiamo dicendo che sono la stessa variabile (e.g., a = 0, b = a e a = 7, non ti porta ad avere b = 7) quindi vale il terzo pallino nella seconda considerazione.