single
Attraversamento e Visualizzazione di una Lista Collegata
Scorri per mostrare il menu
Dopo aver imparato come creare e collegare i nodi, è necessario verificare che la lista funzioni correttamente!
Per fare ciò, scriviamo una semplice funzione che visualizzerà l'intera lista.
La funzione accetterà un puntatore all'area di memoria dove è memorizzato il nodo head (primo) della lista.
void printList(struct Node* head) {}
Successivamente verrà creato un nodo temporaneo current, con il quale attraverseremo l'intera lista. Il contenuto del nodo current sarà uguale al contenuto del nodo corrente della lista.
struct Node* current = head;
Per scorrere la lista, utilizziamo il ciclo while(){} con la condizione necessaria, ovvero, fino a quando non si trova un nodo il cui campo next è NULL.
Il nodo temp (temporaneo) svolge il ruolo di nodo buffer. Serve per memorizzare temporaneamente (e cancellare) il contenuto del nodo corrente. Se cancelliamo immediatamente il nodo corrente, perderemo la connessione con il nodo successivo, il che significa che l'accesso alla lista sarà perso.
while (current != NULL) { }
printf("\n");
All'interno del ciclo, visualizzeremo il contenuto del campo data del nodo corrente e cambieremo il campo next per passare al nodo successivo.
printf("%d ", current->data);
current = current->next;
Non appena viene trovato un nodo il cui campo next è uguale a NULL, il ciclo interrompe la visualizzazione del contenuto dei nodi e la funzione termina.
Scorri per iniziare a programmare
Implementare una semplice lista collegata singolarmente con allocazione dinamica della memoria. Il compito è completare le funzioni printList e freeList.
-
Implementare una funzione
printListcon un singolo parametrostruct Node* head.- All'interno di
printList, dichiarare una variabilecurrente inizializzarla ahead. - Utilizzare un ciclo
whileper iterare finchécurrentnon èNULL. - In ogni iterazione, stampare il campo
datadicurrente spostarecurrental nodo successivo. - Dopo il ciclo, stampare un carattere di nuova linea per separare l'output.
- All'interno di
-
All'interno di
freeList, dichiarare una variabilecurrente inizializzarla ahead.- Utilizzare un ciclo
whileper iterare finchécurrentnon èNULL. - All'interno del ciclo, memorizzare
currentin una variabile temporaneatemp. - Spostare
currental nodo successivo. - Liberare la memoria allocata per
temp.
- Utilizzare un ciclo
Soluzione
Grazie per i tuoi commenti!
single
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione