unit cellule; {$mode delphi}{$H+} interface type PCellule = ^Cellule; // Record pour la date (création d'un nouveau type) date = record jour = Integer; mois = Integer; annee = Integer; end; // Record pour la cellule Cellule = record valeur : date; suivant : PCellule; end; uses SysUtils, Classes; implementation //@param la liste de type PCellule //@param la nouvelle valeur de la clé de type Integer procedure ajouter(var : liste: PCellule; jour,mois,annee: Integer); var p : PCellule; begin // Je créer un nouveau espace dans la mémoire pour P new(p); // en utilisant le pointeur p dont on lui a dediée un espace avec new on le remplis p^.valeur.jour := jour; p^.valeur.mois := mois; p^.valeur.annee := annee; // on donne aussi comme prochain tableau son pointeur. Donc on met avant ce que on vien d'ajouter à ce que on a donner en param p^.suivant := liste; // on affecte la liste avec le pointeur actuelle. liste := p; end; procedure vider(var liste: PCellule); var p, r: PCellule; begin p := liste; while (p <> NIL) do begin // on sauvegarde le pointeur du suivant r := p^.suivant; // on vide p dispose(p); // et on affecte p avec le pointeur suivant sauvegardé p := r; end; liste := NIL; end; procedure afficher(liste: PCellule); var p: PCellule; begin p := liste; while p <> NIL do begin writeln(p^.valeur); p := p^.suivant; end; end; procedure afficher(liste: PCellule); var p: PCellule; begin p := liste; while p <> NIL do begin writeln(p^.valeur); p := p^.suivant; end; end; end.