Online C Compiler
Apri nel compilatore

Edizione didattica italiana

Esempio di lista concatenata semplice in C

Collega nodi dinamici, aggiorna la testa e libera la memoria correttamente.

Apri nel compilatore

Esempio di lista concatenata semplice in C
Collega nodi dinamici, aggiorna la testa e libera la memoria correttamente.

Ogni nodo contiene un valore e un puntatore al successivo. head indica il primo nodo; NULL segna la fine o una lista vuota. Gli indirizzi dei nodi non devono essere consecutivi.

Controlla malloc prima di scrivere. In inserimenti e rimozioni preserva il collegamento al resto e aggiorna head se cambia il primo nodo. Cercare un valore richiede un percorso in O(N).

Per liberare la lista, salva il successivo prima di chiamare free sul nodo corrente. Prova una lista vuota, un nodo e più nodi. Non leggere campi dopo la liberazione.

Codice sorgente

#include <stdio.h>
#include <stdlib.h>

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

Node* insertHead(Node *head, int val) {
    Node *newNode = (Node *)malloc(sizeof(Node));
    newNode->data = val;
    newNode->next = head;
    return newNode;
}

void printList(Node *head) {
    Node *curr = head;
    while (curr != NULL) {
        printf("%d -> ", curr->data);
        curr = curr->next;
    }
    printf("NULL\n");
}

void freeList(Node *head) {
    Node *curr = head;
    while (curr != NULL) {
        Node *temp = curr;
        curr = curr->next;
        free(temp);
    }
}

int main() {
    Node *head = NULL;
    head = insertHead(head, 30);
    head = insertHead(head, 20);
    head = insertHead(head, 10);

    printf("Linked List: ");
    printList(head);

    freeList(head);
    return 0;
}
Apri nel compilatore

Risultato atteso

Linked List: 10 -> 20 -> 30 -> NULL

Domande frequenti

Perché il codice e alcuni risultati restano in inglese?

Parole chiave C, identificatori, commenti del programma e output attesi restano quelli originali per preservare codice eseguibile e test coerenti. Spiegazioni e istruzioni sono tradotte.