Édition pédagogique en français
Liste simplement chaînée en C
Créez, parcourez et libérez des nœuds reliés par des pointeurs.

Chaque nœud stocke une valeur et un pointeur vers le suivant. head désigne le premier ; NULL marque la fin ou une liste vide. Les nœuds ne doivent pas nécessairement occuper des adresses consécutives.
Vérifiez malloc avant toute écriture. À l’insertion ou à la suppression, préservez le lien avec le reste et actualisez head si le premier nœud change. Une recherche par valeur parcourt la liste en O(N).
Pour libérer la liste, mémorisez le suivant avant free sur le nœud courant. Testez liste vide, un seul nœud et plusieurs nœuds. Ne lisez aucun champ après la libération.
Code source
#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;
}Ouvrir dans le compilateurRésultat attendu
Linked List: 10 -> 20 -> 30 -> NULL
Questions fréquentes
Pourquoi le code et certains résultats restent-ils en anglais ?
Les mots-clés C, les identifiants, les commentaires du programme et les sorties attendues restent ceux de la version originale pour conserver un code exécutable et des tests cohérents. Les explications et les consignes sont traduites.