procedure Insertion( Valeur, NumChaine : integer);
{Procedure permettant d'affecter une valeur a
 la liste qui se trouvre a NumChaine dans le tableau}
var Courant,Entete: PtrNoeud;

begin
  if (NumChaine> MaxNbSommets) OR (NumChaine < 1) then begin
    writeln('L''indice du tableau doit etre entre  1 et ', MaxNbSommets);
    readln;
    halt
    end
  else begin
    {Creation du noeud a inserer}
    New(Entete);
    with Entete^ do begin
      Donnee:= Valeur;
      Suivant:= nil;
      end; { with }
    if TabElement[NumChaine].Chaine = NIL then
      TabElement[NumChaine].Chaine:= Entete
    else begin
      Courant:=  TabElement[NumChaine].Chaine;
      while Courant^.Suivant<>NIL DO Courant:= Courant^.Suivant;
      {Insertion de Entete dans Courant}
      Courant^.Suivant := Entete;
      end; { if TabElement... else }
    TabElement[NumChaine].Taillechaine :=
      succ(TabElement[NumChaine].Taillechaine);
    end; { if (NumChaine> MaxNbSommets)... else }
end; { Insertion }

Procedure afficher;
{Parcourir la Chaine et afficher le contenu de la Chaine}
var j: integer;
    PtCourant: PtrNoeud;
begin { afficher }
  for j:= 1 to MaxNumChaine do begin
    writeln('TabElement[',j,']');
    PtCourant:=  TabElement[j].Chaine;

    while PtCourant <> nil do begin
      writeln(PtCourant^.Donnee);
      PtCourant:= PtCourant^.Suivant;
      end; { while }
    readln;
    end; { for }
end; { afficher }
