trouve :booléen
Début
trouve←FAUX
pPrec←NIL
pEncours←pTete
Tant que pEncoursNIL ET pEncours→valeur<>v Faire
pPrec←pEncours
pEncours ← pEncours→pSuiv
FinTantQue
Si pEncoursNIL ET pEncours→valeur=v Alors
trouve←VRAI
FinSI
FinProc
e. Ajout d’un élément
Pour l’ajout d’un élément dans la liste, trois cas de figure peuvent se présenter, nécessitant trois traitements
différents :
q L’ajout d’un élément en début de liste.
q L’ajout d’un élément en milieu de liste.
q L’ajout d’un élément en fin de liste.
Dans les trois cas, le chaînage est modifié. Il est certes possible de créer un gros sousprogramme qui gère les trois
cas d’un coup, mais il est profitable de différencier ces trois traitements en trois sousprogrammes indépendants. Il
sera toujours temps ensuite de créer un sousprogramme fédérateur qui gèrera tous les cas.
Dans tous les cas suivants, l’adresse de l’élément à rajouter, que vous aurez déjà remplie avec la bonne valeur, sera
représentée par le pointeur pNouveau.
Deux cas sont possibles : l’ajout d’un élément dans une liste vide, auquel cas il s’agit du premier enregistrement, et
l’ajout d’un élément en première position de la liste.
Dans le premier cas, il s’agit de faire en sorte que l’élément à ajouter soit le premier, donc que pNouveau devienne
l’élément de tête de la liste, sans élément suivant. Vous passez à la procédure le pointeur sur l’enregistrement et le
pointeur de tête.
Procédure ajout_unique(E :pNouveau, ES :pTete: pointeurs sur element)
Début
pNouveau→pSuiv ← NIL
pTete←pNouveau
FinProc
La seconde procédure ajoute le nouvel élément en tête de liste, sachant que la liste contient déjà au moins un
élément. C’est un cas très simple où le nouvel élément reçoit comme élément suivant celui de tête. Pour ce dernier,
rien ne change.
Procédure ajout_début(E :pNouveau, ES :pTete :pointeurs sur element)
Début
pNouveau→pSuiv ← pTete
pTete←pNouveau
FinProc
C’est encore un cas très simple. Le rajout d’un élément en fin de liste nécessite seulement de connaître l’adresse du
dernier élément actuel. Le pointeur pSuiv de ce dernier pointera sur le nouvel élément, et le pSuiv du nouvel élément
recevra NIL.
Si vous reprenez les procédures de recherche et de parcours de la liste chaînée, à la fin de la liste pEncours vaut NIL
et pPrec contient l’adresse du dernier enregistrement. La procédure ajout_fin() reçoit deux paramètres : pNouveau et
pPrec.
Ajout en début de liste
Ajout en fin de liste
- 5 -
© ENI Editions - All rigths reserved - Jonifar lina
178
Début
trouve←FAUX
pPrec←NIL
pEncours←pTete
Tant que pEncoursNIL ET pEncours→valeur<>v Faire
pPrec←pEncours
pEncours ← pEncours→pSuiv
FinTantQue
Si pEncoursNIL ET pEncours→valeur=v Alors
trouve←VRAI
FinSI
FinProc
e. Ajout d’un élément
Pour l’ajout d’un élément dans la liste, trois cas de figure peuvent se présenter, nécessitant trois traitements
différents :
q L’ajout d’un élément en début de liste.
q L’ajout d’un élément en milieu de liste.
q L’ajout d’un élément en fin de liste.
Dans les trois cas, le chaînage est modifié. Il est certes possible de créer un gros sousprogramme qui gère les trois
cas d’un coup, mais il est profitable de différencier ces trois traitements en trois sousprogrammes indépendants. Il
sera toujours temps ensuite de créer un sousprogramme fédérateur qui gèrera tous les cas.
Dans tous les cas suivants, l’adresse de l’élément à rajouter, que vous aurez déjà remplie avec la bonne valeur, sera
représentée par le pointeur pNouveau.
Deux cas sont possibles : l’ajout d’un élément dans une liste vide, auquel cas il s’agit du premier enregistrement, et
l’ajout d’un élément en première position de la liste.
Dans le premier cas, il s’agit de faire en sorte que l’élément à ajouter soit le premier, donc que pNouveau devienne
l’élément de tête de la liste, sans élément suivant. Vous passez à la procédure le pointeur sur l’enregistrement et le
pointeur de tête.
Procédure ajout_unique(E :pNouveau, ES :pTete: pointeurs sur element)
Début
pNouveau→pSuiv ← NIL
pTete←pNouveau
FinProc
La seconde procédure ajoute le nouvel élément en tête de liste, sachant que la liste contient déjà au moins un
élément. C’est un cas très simple où le nouvel élément reçoit comme élément suivant celui de tête. Pour ce dernier,
rien ne change.
Procédure ajout_début(E :pNouveau, ES :pTete :pointeurs sur element)
Début
pNouveau→pSuiv ← pTete
pTete←pNouveau
FinProc
C’est encore un cas très simple. Le rajout d’un élément en fin de liste nécessite seulement de connaître l’adresse du
dernier élément actuel. Le pointeur pSuiv de ce dernier pointera sur le nouvel élément, et le pSuiv du nouvel élément
recevra NIL.
Si vous reprenez les procédures de recherche et de parcours de la liste chaînée, à la fin de la liste pEncours vaut NIL
et pPrec contient l’adresse du dernier enregistrement. La procédure ajout_fin() reçoit deux paramètres : pNouveau et
pPrec.
Ajout en début de liste
Ajout en fin de liste
- 5 -
© ENI Editions - All rigths reserved - Jonifar lina
178
