Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Attraversamento e Visualizzazione di una Lista Collegata | Implementazione delle Strutture Dati
Practice
Projects
Quizzes & Challenges
Quizzes
Challenges
/
Padronanza delle Struct in C

bookAttraversamento e Visualizzazione di una Lista Collegata

Dopo aver imparato come creare e collegare i nodi, è necessario verificare che tale lista funzioni correttamente!

Per fare ciò, si può scrivere una semplice funzione che visualizza l'intera lista.

La funzione accetterà un puntatore all'area di memoria in cui è memorizzato il nodo head (primo) della lista.

void printList(struct Node* head) {}

Successivamente verrà creato un nodo temporaneo current, con il quale si attraverserà l'intera lista. Il contenuto del nodo current sarà uguale al contenuto del nodo corrente della lista.

struct Node* current = head;

Per iterare sulla lista, si utilizza il ciclo while(){} con la condizione necessaria, ovvero, fino a quando non si trova un nodo il cui campo next è NULL.

Note
Nota

Il nodo temp (temporaneo) svolge il ruolo di nodo buffer. Serve per memorizzare temporaneamente (e cancellare) il contenuto del nodo corrente. Se si cancella immediatamente il nodo corrente, si perderà la connessione con il nodo successivo, il che significa che l'accesso alla lista verrà perso.

while (current != NULL) { }
printf("\n");

All'interno del ciclo, si visualizzerà il contenuto del campo data del nodo corrente e si modificherà 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.

Compito

Swipe to start coding

Implementare una semplice lista collegata singolarmente con allocazione dinamica della memoria. Il compito è completare le funzioni printList e freeList.

  1. Implementare una funzione printList con un singolo parametro struct Node* head.

    • All'interno di printList, dichiarare una variabile current e inizializzarla a head.
    • Utilizzare un ciclo while per iterare finché current non è NULL.
    • In ogni iterazione, stampare il campo data di current e spostare current al nodo successivo.
    • Dopo il ciclo, stampare un carattere di nuova linea per separare l'output.
  2. All'interno di freeList, dichiarare una variabile current e inizializzarla a head.

    • Utilizzare un ciclo while per iterare finché current non è NULL.
    • All'interno del ciclo, memorizzare current in una variabile temporanea temp.
    • Spostare current al nodo successivo.
    • Liberare la memoria allocata per temp.

Soluzione

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 5. Capitolo 4
single

single

Chieda ad AI

expand

Chieda ad AI

ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

close

bookAttraversamento e Visualizzazione di una Lista Collegata

Scorri per mostrare il menu

Dopo aver imparato come creare e collegare i nodi, è necessario verificare che tale lista funzioni correttamente!

Per fare ciò, si può scrivere una semplice funzione che visualizza l'intera lista.

La funzione accetterà un puntatore all'area di memoria in cui è memorizzato il nodo head (primo) della lista.

void printList(struct Node* head) {}

Successivamente verrà creato un nodo temporaneo current, con il quale si attraverserà l'intera lista. Il contenuto del nodo current sarà uguale al contenuto del nodo corrente della lista.

struct Node* current = head;

Per iterare sulla lista, si utilizza il ciclo while(){} con la condizione necessaria, ovvero, fino a quando non si trova un nodo il cui campo next è NULL.

Note
Nota

Il nodo temp (temporaneo) svolge il ruolo di nodo buffer. Serve per memorizzare temporaneamente (e cancellare) il contenuto del nodo corrente. Se si cancella immediatamente il nodo corrente, si perderà la connessione con il nodo successivo, il che significa che l'accesso alla lista verrà perso.

while (current != NULL) { }
printf("\n");

All'interno del ciclo, si visualizzerà il contenuto del campo data del nodo corrente e si modificherà 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.

Compito

Swipe to start coding

Implementare una semplice lista collegata singolarmente con allocazione dinamica della memoria. Il compito è completare le funzioni printList e freeList.

  1. Implementare una funzione printList con un singolo parametro struct Node* head.

    • All'interno di printList, dichiarare una variabile current e inizializzarla a head.
    • Utilizzare un ciclo while per iterare finché current non è NULL.
    • In ogni iterazione, stampare il campo data di current e spostare current al nodo successivo.
    • Dopo il ciclo, stampare un carattere di nuova linea per separare l'output.
  2. All'interno di freeList, dichiarare una variabile current e inizializzarla a head.

    • Utilizzare un ciclo while per iterare finché current non è NULL.
    • All'interno del ciclo, memorizzare current in una variabile temporanea temp.
    • Spostare current al nodo successivo.
    • Liberare la memoria allocata per temp.

Soluzione

Switch to desktopCambia al desktop per esercitarti nel mondo realeContinua da dove ti trovi utilizzando una delle opzioni seguenti
Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 5. Capitolo 4
single

single

some-alt