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

0

In C, per creare una lista collegata scriviamo:

struct Node{
int data;
struct Node* next;
};

Quindi, la mia comprensione è "struct Node * next" è una variabile puntatore del tipo di dati "Node". Ma come indica il prossimo nodo in una lista collegata?

    
posta Spandan 13.09.2015 - 12:14
fonte

2 risposte

2

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

L'idea è 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 lo richiedi manualmente con malloc). La struttura di questo blocco di memoria è definita dalla tua struttura "Nodo". Ti dice che prima ci sono alcuni byte per l'int (sizeof int ti dice come mutch) e poi ci sono alcuni byte per un indirizzo (questo è il tuo puntatore "next"). Sull'ultimo elemento del tuo elenco collegato di solito usi null come valore per il prossimo, in questo modo puoi controllare se il tuo oggetto attivo è l'ultimo. Per aggiungere un elemento alla tua lista devi mallocare la memoria per esso e cambiare il prossimo puntatore dell'ultimo elemento nella posizione di memoria che malloc ha distribuito. (E non dimenticare di impostare il prossimo puntatore dell'articolo appena creato su null.)

In questo modo funziona una lista collegata. Spero che questo aiuti un po '!

    
risposta data 13.09.2015 - 12:55
fonte
1

Questo fa parte di una definizione di tipo. in sé e per sé non punta a nulla, per la stessa ragione per cui non puoi mettere un vero divano e TV all'interno di un soggiorno disegnato 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 una lista collegata è che quando qualcuno crea effettivamente i nodi, assegna un valore al campo descritto da quella definizione, che è un puntatore che contiene l'indirizzo di un'altra Node .

    
risposta data 13.09.2015 - 12:57
fonte

Leggi altre domande sui tag