Opérations-Listes Chainees

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 3

Chapitre 2 : Listes linéaires chaînées

Opérations de base (insertion, suppression, recherche et affichage des éléments)


1. Insertion
Voici la fonction en langage pseudo-code (ou langage naturel) pour insérer un élément en tête d'une liste
chaînée :
InsérerEnTête(liste, valeur)
nouveau_noeud = NouveauNoeud(valeur)// Crée un nouveau nœud avec la valeur
spécifiée
si liste est vide alors
liste.debut = nouveau_noeud // Le nouveau nœud devient le début de la liste
liste.fin = nouveau_noeud // Le nouveau nœud devient aussi la fin de la liste
sinon
nouveau_noeud.suivant = liste.debut // Le nouveau nœud pointe vers l'ancien
début de la liste
liste.debut = nouveau_noeud // Le nouveau nœud devient le nouveau début de la
liste
Cette fonction prend en entrée la liste chaînée (liste) et la valeur de l'élément à insérer (valeur). Elle crée
un nouveau nœud avec cette valeur, puis l'insère en tête de la liste chaînée. Si la liste est vide, le nouveau
nœud devient à la fois le début et la fin de la liste. Sinon, le nouveau nœud est placé en tête de la liste et
pointe vers l'ancien début de la liste. Enfin, le début de la liste est mis à jour pour pointer vers le nouveau
nœud.

Voici la fonction en langage pseudo-code (ou langage naturel) pour insérer un élément en fin de liste
chaînée :
InsérerEnFin(liste, valeur)
nouveau_noeud = NouveauNoeud(valeur)// Crée un nouveau nœud avec la valeur
spécifiée
si liste est vide alors
liste.debut = nouveau_noeud // Le nouveau nœud devient le début de la liste
liste.fin = nouveau_noeud // Le nouveau nœud devient aussi la fin de la liste
sinon
liste.fin.suivant = nouveau_noeud // Le dernier nœud de la liste pointe vers
le nouveau nœud
liste.fin = nouveau_noeud // Le nouveau nœud devient la nouvelle fin de la
liste
Cette fonction prend en entrée la liste chaînée (liste) et la valeur de l'élément à insérer (valeur). Elle crée
un nouveau nœud avec cette valeur, puis l'insère en fin de liste chaînée. Si la liste est vide, le nouveau
nœud devient à la fois le début et la fin de la liste. Sinon, le dernier nœud de la liste pointe vers le nouveau
nœud, puis le nouveau nœud est défini comme la nouvelle fin de la liste.
Voici la fonction en langage pseudo-code (ou langage naturel) pour insérer un élément après un nœud
spécifique dans une liste chaînée :
InsérerAprèsNoeud(noeud, valeur)
si noeud est null alors
renvoyer "Le nœud spécifié est nul, l'insertion est impossible."
sinon
nouveau_noeud = NouveauNoeud(valeur) // Crée un nouveau nœud avec la valeur
spécifiée
nouveau_noeud.suivant = noeud.suivant // Le nouveau nœud pointe vers le nœud
suivant du nœud spécifié

1
noeud.suivant = nouveau_noeud // Le nœud spécifié pointe vers le nouveau nœud
Cette fonction prend en entrée le nœud spécifique après lequel insérer l'élément (noeud) et la valeur de
l'élément à insérer (valeur). Elle vérifie d'abord si le nœud spécifié n'est pas nul. Ensuite, elle crée un
nouveau nœud avec la valeur spécifiée. Le nouveau nœud est inséré après le nœud spécifié en mettant à
jour les pointeurs : le nouveau nœud pointe vers le nœud suivant du nœud spécifié, puis le nœud spécifié
pointe vers le nouveau nœud.

2. Suppression
Voici la fonction en langage pseudo-code (ou langage naturel) pour supprimer un élément en tête d'une
liste chaînée :
SupprimerEnTête(liste)
si liste.debut est null alors
renvoyer "La liste est vide, aucune suppression n'est effectuée."

si liste.debut = liste.fin
liste.debut = null
liste.fin = null
sinon
liste.debut = liste.debut.suivant
Cette fonction supprime l'élément en tête de la liste chaînée. Elle vérifie d'abord si la liste est vide. Si c'est
le cas, elle indique qu'aucune suppression n'est effectuée. Sinon, si le début de la liste est également le
dernier élément (ce qui signifie qu'il n'y a qu'un seul élément dans la liste), la fonction met à jour à la fois le
début et la fin de la liste à null. Sinon, elle met simplement à jour le début de la liste pour pointer vers le
deuxième élément de la liste, ce qui supprime ainsi le premier élément.

Voici la fonction en langage pseudo-code (ou langage naturel) pour supprimer un élément en fin de liste
chaînée :
SupprimerEnFin(liste)
si liste.debut est null alors
renvoyer "La liste est vide, aucune suppression n'est effectuée."

si liste.debut = liste.fin alors


liste.debut = null
liste.fin = null
sinon
nœud_actuel = liste.debut
tant que nœud_actuel.suivant n'est pas liste.fin faire
nœud_actuel = nœud_actuel.suivant
nœud_actuel.suivant = null
liste.fin = nœud_actuel
Cette fonction supprime l'élément en fin de la liste chaînée. Elle vérifie d'abord si la liste est vide. Si c'est le
cas, elle indique qu'aucune suppression n'est effectuée. Ensuite, elle vérifie si le début de la liste est
également le dernier élément. Si tel est le cas (ce qui signifie qu'il n'y a qu'un seul élément dans la liste), la
fonction met à jour à la fois le début et la fin de la liste à null. Sinon, elle parcourt la liste jusqu'à l'avant-
dernier nœud, puis supprime la référence au dernier nœud en mettant à null le lien suivant du nœud avant-
dernier, et met à jour la référence finale de la liste pour pointer vers l'avant-dernier nœud.

Voici la fonction en langage pseudo-code (ou langage naturel) pour supprimer un élément après un nœud
spécifique dans une liste chaînée :
SupprimerAprèsNoeud(noeud)
si noeud est null ou si noeud.suivant est null alors

2
renvoyer "Le nœud spécifié est invalide ou il n'y a pas de nœud après celui-
ci."
sinon
nœud_a_supprimer = noeud.suivant
noeud.suivant = nœud_a_supprimer.suivant
Libérer(nœud_a_supprimer)// Libérer la mémoire occupée par le nœud à supprimer
Cette fonction prend en entrée le nœud spécifique après lequel supprimer l'élément (noeud). Elle vérifie
d'abord si le nœud spécifié n'est pas nul et s'il a un nœud suivant. Ensuite, elle stocke le nœud suivant dans
une variable temporaire (nœud_a_supprimer), puis met à jour le lien du nœud spécifié pour sauter le
nœud à supprimer. Enfin, elle libère la mémoire occupée par le nœud à supprimer.
3. Recherche dans une Liste Chaînée
Voici la fonction en pseudo-code pour rechercher un élément donné dans une liste chaînée :
RechercherElement(liste, valeur_recherchee)
nœud_actuel = liste.debut
tant que nœud_actuel n'est pas null faire
si nœud_actuel.valeur est égale à valeur_recherchee alors
renvoyer "L'élément a été trouvé"
sinon
nœud_actuel = nœud_actuel.suivant
renvoyer "L'élément n'a pas été trouvé"

4. Affichage de la Liste Chaînée


Voici la fonction en pseudo-code pour afficher tous les éléments d'une liste chaînée :
AfficherListe(liste)
nœud_actuel = liste.debut
tant que nœud_actuel n'est pas null faire
afficher nœud_actuel.valeur
nœud_actuel = nœud_actuel.suivant
Cette fonction parcourt la liste chaînée en commençant par le premier nœud (liste.debut). Tant que le
nœud actuel n'est pas nul, ce qui signifie qu'il reste des éléments à parcourir, la fonction affiche la
valeur du nœud actuel et passe ensuite au nœud suivant en suivant les références suivant. Cette boucle
continue jusqu'à ce que le nœud actuel devienne nul, ce qui indique la fin de la liste.

Vous aimerez peut-être aussi