Zig Academy · Leçon

Une liste chaînée simple

Nœuds, propriété et parcours.

Leçon 2 sur 413 étapes

Une liste chaînée simple est une leçon Zig Academy gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Zig Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Zig Academy comprend 4 leçons au total.

Qu’est-ce qu’une liste chaînée ?

Une liste simplement chaînée relie des valeurs : chaque node contient une valeur et un pointeur vers le node suivant, ou null à la fin. 🔗

Définir le Node

Un node est une structure contenant une valeur et un pointeur optionnel vers le node suivant. Optionnel signifie que le dernier node pointe vers null.

const Node = struct {
    value: i32,
    next: ?*Node,
};

Pourquoi le pointeur est optionnel

Utiliser ?*Node permet à la chaîne de se terminer proprement. Il n’est pas nécessaire d’utiliser une valeur sentinelle spéciale pour marquer la fin.

next: ?*Node

La liste suit la tête

La liste elle-même mémorise simplement le premier node, appelé la tête, ainsi que l’allocateur qui possède chaque node.

const List = struct {
    head: ?*Node,
    alloc: std.mem.Allocator,
};

Allouer un node

Pour ajouter une valeur, demandez à l’allocateur de create un seul Node sur le tas. Cela renvoie un pointeur vers un espace mémoire fraîchement alloué.

const node = try self.alloc.create(Node);

Ajouter au début

L’insertion la moins coûteuse se fait en tête : faites pointer le nouveau node vers l’ancienne tête, puis faites-en la nouvelle tête. Cette opération s’effectue en temps constant.

node.* = .{ .value = v, .next = self.head };
self.head = node;

Parcourir la chaîne

Pour parcourir la liste, commencez à la tête et suivez chaque pointeur next jusqu’à atteindre null. Une boucle while représente parfaitement ce parcours.

var cur = self.head;
while (cur) |n| {
    std.debug.print("{d}\n", .{n.value});
    cur = n.next;
}

La capture déplie l’optionnel

Écrire while (cur) |n| exécute le corps tant que cur n’est pas null, et n contient le pointeur déplié. La boucle se termine à null.

while (cur) |n| { ... }

Vous possédez chaque node

Chaque node provient de l’allocateur et doit donc être restitué. En oublier ne serait-ce qu’un seul constitue une fuite que l’allocateur de test signalera.

Libérer toute la liste

Parcourez la chaîne dans deinit, mais récupérez next avant de libérer le node, car celui-ci n’existe plus dès que vous le détruisez.

var cur = self.head;
while (cur) |n| {
    const nxt = n.next;
    self.alloc.destroy(n);
    cur = nxt;
}

La rendre générique

Placez Node et List dans une fonction qui renvoie un type afin que la liste fonctionne avec n’importe quel type d’élément, et pas seulement avec i32.

fn LinkedList(comptime T: type) type {
    return struct {
        const Node = struct { value: T, next: ?*Node };
    };
}

Vérification rapide

Vous libérez une liste chaînée node par node. Que devez-vous faire avant de détruire chaque node ?

Récapitulatif

Les nodes contiennent une valeur et un pointeur next optionnel. La liste suit la tête et un allocateur, ajoute les éléments au début et libère les nodes un par un. 🎯

Gratuit pour commencer

Apprends Zig avec un tuteur IA — gratuit

Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.

Cours
30
Leçons
120

Questions Fréquemment Posées

La leçon « Une liste chaînée simple » est-elle gratuite ?

Oui — le texte complet de « Une liste chaînée simple » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Zig Academy, passe à CoddyKit PRO. Le cours Zig Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Une liste chaînée simple » ?

Nœuds, propriété et parcours. Tu pratiques Zig Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Zig Academy ?

Aucune expérience préalable n'est requise. Zig Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.

Combien de temps prend la leçon « Une liste chaînée simple » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Zig Academy ?

Oui. Chaque leçon Zig Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Une pile générique créée de zéro
  2. Une liste chaînée simple
  3. Utiliser HashMap et AutoHashMap
  4. Profilage et compromis de sécurité
← Retour à Zig Academy