C: Come funziona struct node * next? [chiuso]

Chiuso . Questa domanda richiede dettagli o chiarezza . Attualmente non accetta risposte.

Commenti

  • Dichiararlo semplicemente come Node* non lo fa puntare da nessuna parte, dice solo al compilatore che ' sa un puntatore ad alcuni Node (o nessun Node). Deve essere presente un codice effettivo che imposta il puntatore next in modo che punti al successivo Node. È di questo che eri confuso?
  • Poiché non esiste (ancora) alcun struct Node, non esiste alcun membro. Quindi nessun membro punta da nessuna parte.

Risposta

Il tuo codice è solo una piccola parte di un elenco collegato.

Lidea è che la tua lista sia composta da n occorrenze della struttura che hai chiamato “Nodo”. Hai bisogno di un puntatore al PRIMO di essi, questo puntatore ti dice la posizione di memoria di questa prima struttura (di solito richiedi lo spazio per questo manualmente con malloc). La struttura di questo blocco di memoria è definita dalla tua struttura “Nodo”. Ti dice che prima ci sono alcuni byte per int (sizeof int ti dice come mutch) e poi ci sono alcuni byte per un indirizzo (questo è il tuo puntatore “next”). Nellultimo elemento della tua lista collegata di solito usi null come valore per next, in questo modo puoi controllare se il tuo elemento attivo è lultimo. Per aggiungere un oggetto alla tua lista devi mallocare la memoria per esso e cambiare il puntatore successivo dellultimo elemento nella posizione di memoria che malloc ha dato. (E non dimenticare di impostare il puntatore successivo dellelemento appena creato su null.)

In questo modo funziona una lista collegata. Spero che questo aiuti un po ! immagine elenco collegato

Commenti

  • In realtà, sarebbe più corretto che la freccia " successiva " punti a " Oggetto " (o forse anche meglio, nellangolo in alto a sinistra del riquadro seguente). Allo stato attuale, sembra che ' punti al " successivo " membro della struttura, ma in realtà ' punta alla successiva istanza di dati ' indirizzo di base. Puoi anche scegliere a cosa deve puntare lelemento finale ' s " successivo "; può puntare ad es. NULL (nel qual caso lelenco può essere attraversato solo in una direzione), oppure potrebbe puntare al primo elemento dellelenco (formando un elenco collegato circolare).
  • Puoi anche, ovviamente, avere ogni membro dellelenco punta sia al " successivo " e al " precedente " elemento dellelenco. Ciò richiede un po più di contabilità quando si modifica lelenco, ma consente di attraversare lelenco in qualsiasi direzione che può essere vantaggiosa nelle letture. Come per tutto il resto dellingegneria, ' è un compromesso.

Risposta

Questo fa parte di una definizione di tipo. di per sé non indica nulla, per lo stesso motivo per cui non si può mettere un vero divano e una TV allinterno di un soggiorno disegnati su una serie di progetti per una casa. Specifica semplicemente “questo è ciò che dovrebbe andare qui”.

Il modo in cui punta al nodo successivo in un elenco collegato è che quando qualcuno crea effettivamente i nodi, assegna un valore al campo descritto da quella definizione, che è un puntatore che contiene lindirizzo di un altro Node.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *