// Chaînage : pEncours est le suivant de pPrec
pPrec→pSuiv ← pEncours
pPrec←pEncours
FinSi
Jusqu’à v=0
// Fin de liste : pSuiv à NIL
pPrec→pSuiv ← NIL
Retourne pTete
FinFonc
c. Parcours de la liste
Le parcours de la liste est maintenant possible puisque la fonction précédente vous a permis de remplir quelques
enregistrements. Comme toujours on part du pointeur de tête, puis on passe d’enregistrement en enregistrement
jusqu’à rencontrer la valeur NIL.
La fonction parcours_liste reçoit comme argument le pointeur de tête. Une simple boucle va ensuite balayer toute la
liste et afficher toutes les valeurs qui y sont contenues.
Fonction parcours_liste(pTete :pointeur sur element)
Var
pEncours :pointeur sur élément
Début
pEncours←pTete
Tant que pEncours<>NIL Faire
Afficher pEncours→valeur
pEncours ← pEncours→pSuiv
FinTantQue
FinFonc
d. Recherche
Deux types de sousprogrammes sont possibles : le premier détermine si l’élément existe dans la liste et retourne un
booléen, vrai ou faux, selon que l’élément est trouvé ou non. C’est donc une fonction. Le second retourne l’adresse
de l’élément trouvé et l’adresse de l’élément précédent, vous verrez pourquoi ensuite. C’est donc une procédure car
une fonction ne peut retourner deux valeurs. Mais pourquoi ne pas faire d’une pierre deux coups, c’estàdire un
sousprogramme qui va à la fois retourner vrai ou faux, mais aussi des pointeurs sur l’élément courant et précédent ?
C’est possible car vous pouvez passer des pointeurs comme arguments de fonctions, modifier l’adresse sur laquelle
ils pointent, et retourner tout de même un booléen. En fait, il est quasiment inutile de retourner un booléen car de
toute façon si l’élément n’est pas trouvé, pEncours vaudra NIL en sortie de fonction.
La procédure recherche_liste prend quatre paramètres :
q La valeur v recherchée.
q Un pointeur pTete sur la tête de la liste.
q Un pointeur pPrec sur l’élément précédent, celui trouvé.
q Un pointeur pEncours sur l’élément trouvé.
q Un booléen vrai ou faux.
q Si l’élément est trouvé, pPrec pointe sur celui d’avant, pEncours sur l’élément trouvé.
q Si l’élément est absent, pEncours vaur NIL et pPrec pointe sur le dernier élément de la liste.
q Si pPrec vaut NIL, l’élément recherché est le premier de la liste.
Procédure recherche_liste (E:v:entier, E:pTete, ES : pPrec,pEncours
:pointeurs sur element,S :trouve :boolé en)
Var
- 4 -
© ENI Editions - All rigths reserved - Jonifar lina
177
pPrec→pSuiv ← pEncours
pPrec←pEncours
FinSi
Jusqu’à v=0
// Fin de liste : pSuiv à NIL
pPrec→pSuiv ← NIL
Retourne pTete
FinFonc
c. Parcours de la liste
Le parcours de la liste est maintenant possible puisque la fonction précédente vous a permis de remplir quelques
enregistrements. Comme toujours on part du pointeur de tête, puis on passe d’enregistrement en enregistrement
jusqu’à rencontrer la valeur NIL.
La fonction parcours_liste reçoit comme argument le pointeur de tête. Une simple boucle va ensuite balayer toute la
liste et afficher toutes les valeurs qui y sont contenues.
Fonction parcours_liste(pTete :pointeur sur element)
Var
pEncours :pointeur sur élément
Début
pEncours←pTete
Tant que pEncours<>NIL Faire
Afficher pEncours→valeur
pEncours ← pEncours→pSuiv
FinTantQue
FinFonc
d. Recherche
Deux types de sousprogrammes sont possibles : le premier détermine si l’élément existe dans la liste et retourne un
booléen, vrai ou faux, selon que l’élément est trouvé ou non. C’est donc une fonction. Le second retourne l’adresse
de l’élément trouvé et l’adresse de l’élément précédent, vous verrez pourquoi ensuite. C’est donc une procédure car
une fonction ne peut retourner deux valeurs. Mais pourquoi ne pas faire d’une pierre deux coups, c’estàdire un
sousprogramme qui va à la fois retourner vrai ou faux, mais aussi des pointeurs sur l’élément courant et précédent ?
C’est possible car vous pouvez passer des pointeurs comme arguments de fonctions, modifier l’adresse sur laquelle
ils pointent, et retourner tout de même un booléen. En fait, il est quasiment inutile de retourner un booléen car de
toute façon si l’élément n’est pas trouvé, pEncours vaudra NIL en sortie de fonction.
La procédure recherche_liste prend quatre paramètres :
q La valeur v recherchée.
q Un pointeur pTete sur la tête de la liste.
q Un pointeur pPrec sur l’élément précédent, celui trouvé.
q Un pointeur pEncours sur l’élément trouvé.
q Un booléen vrai ou faux.
q Si l’élément est trouvé, pPrec pointe sur celui d’avant, pEncours sur l’élément trouvé.
q Si l’élément est absent, pEncours vaur NIL et pPrec pointe sur le dernier élément de la liste.
q Si pPrec vaut NIL, l’élément recherché est le premier de la liste.
Procédure recherche_liste (E:v:entier, E:pTete, ES : pPrec,pEncours
:pointeurs sur element,S :trouve :boolé en)
Var
- 4 -
© ENI Editions - All rigths reserved - Jonifar lina
177
