1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| Procedure REMPLISSAGE_LISTE(VAR p_liste:ptr_dico;mot:T_mot;VAR nb_cells:integer;posit:integer);
var
p_inser:ptr_dico; // pointe vers l'élément à insérer dans l'arbre
begin
if posit<=length(mot) Then // S'il reste des caractères à ajouter, alors
begin
if (p_liste=NIL) OR (p_liste^.car>mot[posit]) Then // S'il faut ajouter au début
begin
CREATION_CELL(p_inser,mot[posit]); // Création & initialisation du noeud.
nb_cells:=nb_cells+1; // On incrémente le nombre de cellules d'une unité.
p_inser^.droit:=p_liste; // Chaînage
p_liste:=p_inser;
REMPLISSAGE_LISTE(p_liste^.suiv,mot,nb_cells,posit+1); // Ajout dans le sous arbre du bas
end
else // Si on n'ajoute pas au début
begin
if p_liste^.car=mot[posit] Then // Si le caractère est déjà présent à ce niveau, alors
begin
REMPLISSAGE_LISTE(p_liste^.suiv,mot,nb_cells,posit+1); // ajouter dans le sous arbre du bas
end
else // Sinon, le caractère n'est pas présent à ce niveau
begin
REMPLISSAGE_LISTE(p_liste^.droit,mot,nb_cells,posit); // Ajout dans le sous arbre droit
end;
end;
end;
end; |
Partager