SlideShare une entreprise Scribd logo
1  sur  25
Télécharger pour lire hors ligne
Chapitre 4
Les Listes
1
1.Introduction
• Le type tableau : structure linéaire pour lequel les éléments de même type le
composant sont placés de façon contigüe en mémoire.
• Pour créer un tableau, il faut connaître sa taille qui ne pourra être modifiée au
cours du programme, et lui associer un indice pour parcourir ses éléments.
• On accède à un élément du tableau directement grâce à son indice.
• La structure de type tableau pose des problèmes pour insérer ou supprimer un
élément car ces actions nécessitent des décalages du contenu des cases du
tableau qui prennent du temps dans l'exécution d'un programme.
• Ce type de stockage de valeurs peut donc être coûteux en temps d'exécution.
• Il existe une autre structure, appelée liste chaînée: cette structure permet plus
aisément d'insérer et de supprimer des valeurs dans une liste linéaire d'éléments.
2. Définition
• Une liste chaînée est une structure linéaire qui n'a pas de dimension
fixée à sa création.
• Ses éléments de même type sont éparpillés dans la mémoire et reliés
entre eux par des pointeurs.
• Sa dimension peut être modifiée selon la place disponible en
mémoire.
• La liste est accessible uniquement par sa tête de liste c’est-à-dire son
premier élément.
3
2. Définition
• Pour les listes chaînées la séquence est mise en oeuvre par le
pointeur porté par chaque élément qui indique l'emplacement de
l'élément suivant.
• Le dernier élément de la liste ne pointe sur rien (Nil).
• On accède à un élément de la liste en parcourant les éléments grâce à
leurs pointeurs
Exemple
• Soit la liste chaînée suivante (@ indique que le nombre qui le suit
représente une adresse) :
• Pour accéder au troisième élément de la liste il faut toujours débuter la
lecture de la liste par son premier élément dans le pointeur duquel est
indiqué la position du deuxième élément.
• Dans le pointeur du deuxième élément de la liste on trouve la position du
troisième élément…
• Pour ajouter, supprimer ou déplacer un élément il suffit d'allouer une place
en mémoire et de mettre à jour les pointeurs des éléments.
3. Types de listes chainées
Il existe différents types de listes chaînées :
• Liste chaînée simple constituée d'éléments reliés entre eux par des
pointeurs.
• Liste chaînée ordonnée où l'élément suivant est plus grand que le précédent.
L'insertion et la suppression d'élément se font de façon à ce que la liste reste
triée.
• Liste doublement chaînée où chaque élément dispose non plus d'un mais de
deux pointeurs pointant respectivement sur l'élément précédent et l'élément
suivant. Ceci permet de lire la liste dans les deux sens, du premier vers le
dernier élément ou inversement.
• Liste circulaire où le dernier élément pointe sur le premier élément de la
liste. S'il s'agit d'une liste doublement chaînée alors de premier élément
pointe également sur le dernier.
Comparaison tableau/liste chainée
4. Représentation des données
• Une liste chaînée simple est composée :
➢d'un ensemble d'éléments tel que chacun :
▪ est rangé en mémoire à une certaine adresse,
▪ contient une donnée (Info),
▪ contient un pointeur, souvent nommé Suivant, qui contient l'adresse de
l'élément suivant dans la liste,
➢d'une variable, appelée Tête, contenant l'adresse du premier élément de la
liste chaînée.
• Le pointeur du dernier élément contient la valeur Nil.
• Dans le cas d'une liste vide le pointeur de la tête contient la valeur Nil.
• Une liste est définie par l'adresse de son premier élément.
4. Représentation des données
• Soit la liste chainée suivante:
• Le 1er élément de la liste vaut 12 à l'adresse 3 (début de la liste chaînée)
• Le 2e élément de la liste vaut 14 à l'adresse 4 (car le pointeur de la cellule d’adresse 3 est égal à 4)
• Le 3e élément de la liste vaut 10 à l'adresse 2 (car le pointeur de la cellule d’adresse 4 est égal à 2)
• Le 4e élément de la liste vaut 24 à l'adresse 1 (car le pointeur de la cellule d’adresse 2 est égal à 1)
• Si P a pour valeur 3 : P^.Info a pour valeur 12 et P^.Suivant a pour valeur 4
• Si P a pour valeur 2 : P^.Info a pour valeur 10 et P^.Suivant a pour valeur 1
4. Représentation des données
• La structure de donnée qui permet de représenter une liste chaînée dans le
cas général est déclarée comme suit :
• Ainsi le type Liste est un pointeur vers le type Element qui est un
enregistrement formé de deux champs : un qui contient la valeur de
l’élément et le 2ème champ contient un pointeur vers la cellule suivante.
• La dernière cellule ne pointe vers rien donc elle doit contenir la valeur Nil.
• Le type Liste contient un pointeur vers le type Element qui contient
l’adresse du 1er élément de la liste.
Type
Element = enreg
valeur : type
suivant : ^Element
FinEnreg
Liste : ^ Element
5. Opérations sur les listes
• Le test si la liste est vide.
• Calculer la longueur d'une liste (nombre d'éléments)
• Ajouter un élément:
• au début de la liste
• à la fin de la liste
• à un rang donné
• Rechercher un élément:
• résultat booléen
• résultat = rang de la première occurrence
• résultat = nombre d'occurrences
• Supprimer un élément:
• caractérisé par sa valeur
• caractérisé par son rang
5. Opérations sur les listes
5. Opérations sur les listes
• Implémentation des primitives
•
Type
Element = Enreg
val : entier
suiv : ^Element
FinEnreg
Liste = ^ Element
var
L : Liste
Activité 1:
• Ecrire une procédure Init(L) qui permet d’initialiser une liste L
• Ecrire une fonction Vide(L) qui permet de tester si une liste L est vide
ou non
14
• Procédure Init
• Fonction Vide
Procédure Init (Var L : Liste)
Début
L ← Nil
Fin
Fonction Vide (L : Liste): Booléen
Début
Vide ← (L = Nil)
Fin
Activité 2:
• Ecrire une fonction Taille(L) qui revoie la taille d’une liste L
• Ecrire une fonction premier(L) qui revoie la valeur du premier
élément d’une liste L
• Ecrire une fonction Dernier(L) qui revoie la valeur du dernier élément
d’une liste L
16
Fonction Taille (L : Liste) : entier
var
T : entier
P : Liste
Début
T ← 0
P ← L
Tant que (P ≠ Nil) faire
P ← P^.suiv
T ← T + 1
Fin tant que
Taille ← T
Fin
Fonction Dernier (L : Liste) : entier
Var
P : Liste
Début
P ← L
Tant que (P^.suiv ≠ Nil) faire
P ← P^.suiv
Fin Tant que
Dernier ← P^.val
Fin
Fonction Premier
Fonction Premier (L : Liste) : entier
Début
Si (Non Vide (L)) alors
Premier ← L^.val
Finsi
Fin
Activité 3:
• Ecrire une procédure InsererDebut(var L:Liste, x:entier) qui permet
d’ajouter un élément au début de la liste
• Ecrire une fonction InsererFin(Var L:Liste,x: entier) qui permet
d’ajouter un élément à la fin de la liste
• Ecrire une fonction SupprimerDebut(Var L: Liste) qui permet de
supprimer le premier élément de la liste
• Ecrire une fonction Face (L: liste):Liste qui permet de supprimer le
dernier élément de la liste
19
Procédure InsererDebut Procédure InsererFin
Procédure InsererDebut (Var L : Liste, x : entier)
var p: Liste
Début
Allouer (p)
p^.val ← x
p^.suiv ← L
L ← p
Fin
Procédure InsererFin (Var L : Liste, x : entier)
var p,q : Liste
Début
p ← L
Tant que ((p^.suiv) ≠ Nil) Faire
p ← p^.suiv
Fin Tant que
Allouer (q)
q^.val ← x
q^.suiv ← Nil
p^.suiv ← q
Fin
5. Opérations sur les listes
Fonction Face
Fonction Face (L : Liste) : Liste
Var P, K : Liste
Début
Si (Taille (L)=1) alors
Face ← Nil
Sinon
P ← L
Init(K)
Tant que ((P^.suiv) ^.suiv ≠ Nil) faire
InsererFin (K, P^.val)
P ← P^.suiv
Fin Tant que
InsererFin (K, P^.val)
P^.suiv ← Nil
Face ← K
Fin si
Fin
5. Opérations sur les listes
Procédure SupprimerDebut
Procédure SupprimerDebut (Var L : Liste)
Var P : Liste
Début
Si (L <> Nil) alors
P ← L
L ← L^.suiv
Libérer (P) -- permet de libérer l’espace mémoire relatif à P
Finsi
Fin
6. Liste doublement chainée
• Ce type de structure de données est quasiment identique à la précédente
sauf que chaque maillon possède un pointeur vers l’élément précédent.
• C’est une liste dans laquelle on pourra se déplacer en avant ou en arrière.
• chaque élément contient, en plus du champ suivant, un champ prédécesseur
qui est un pointeur sur l’élément précédant dans la liste.
• Si le champ prédécesseur d’un élément vaut Nil, cet élément n’a pas de
prédécesseur et est donc le premier élément ou la tête de la liste.
6. Liste doublement chainée
Type
Element = Enreg
val : entier
suiv : ^Element
pred: ^Element
FinEnreg
Liste = ^Element
var
L : Liste
7. Liste circulaire
• ce type de liste n’est pas linéaire mais cyclique, c’est à dire que le dernier
élément pointe vers le premier.
• Des traitements particuliers doivent être faits puisqu’il faut tenir compte du
fait que le Nil n’existe plus pour représenter le dernier élément.
• La taille de la liste doit être toujours mise à jour.

Contenu connexe

En vedette

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by HubspotMarius Sescu
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTExpeed Software
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsPixeldarts
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthThinkNow
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfmarketingartwork
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024Neil Kimberley
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)contently
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsKurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summarySpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentLily Ray
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best PracticesVit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project managementMindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...RachelPearson36
 

En vedette (20)

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPT
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage Engineerings
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 

Cours_Listes .pdf

  • 2. 1.Introduction • Le type tableau : structure linéaire pour lequel les éléments de même type le composant sont placés de façon contigüe en mémoire. • Pour créer un tableau, il faut connaître sa taille qui ne pourra être modifiée au cours du programme, et lui associer un indice pour parcourir ses éléments. • On accède à un élément du tableau directement grâce à son indice. • La structure de type tableau pose des problèmes pour insérer ou supprimer un élément car ces actions nécessitent des décalages du contenu des cases du tableau qui prennent du temps dans l'exécution d'un programme. • Ce type de stockage de valeurs peut donc être coûteux en temps d'exécution. • Il existe une autre structure, appelée liste chaînée: cette structure permet plus aisément d'insérer et de supprimer des valeurs dans une liste linéaire d'éléments.
  • 3. 2. Définition • Une liste chaînée est une structure linéaire qui n'a pas de dimension fixée à sa création. • Ses éléments de même type sont éparpillés dans la mémoire et reliés entre eux par des pointeurs. • Sa dimension peut être modifiée selon la place disponible en mémoire. • La liste est accessible uniquement par sa tête de liste c’est-à-dire son premier élément. 3
  • 4. 2. Définition • Pour les listes chaînées la séquence est mise en oeuvre par le pointeur porté par chaque élément qui indique l'emplacement de l'élément suivant. • Le dernier élément de la liste ne pointe sur rien (Nil). • On accède à un élément de la liste en parcourant les éléments grâce à leurs pointeurs
  • 5. Exemple • Soit la liste chaînée suivante (@ indique que le nombre qui le suit représente une adresse) : • Pour accéder au troisième élément de la liste il faut toujours débuter la lecture de la liste par son premier élément dans le pointeur duquel est indiqué la position du deuxième élément. • Dans le pointeur du deuxième élément de la liste on trouve la position du troisième élément… • Pour ajouter, supprimer ou déplacer un élément il suffit d'allouer une place en mémoire et de mettre à jour les pointeurs des éléments.
  • 6. 3. Types de listes chainées Il existe différents types de listes chaînées : • Liste chaînée simple constituée d'éléments reliés entre eux par des pointeurs. • Liste chaînée ordonnée où l'élément suivant est plus grand que le précédent. L'insertion et la suppression d'élément se font de façon à ce que la liste reste triée. • Liste doublement chaînée où chaque élément dispose non plus d'un mais de deux pointeurs pointant respectivement sur l'élément précédent et l'élément suivant. Ceci permet de lire la liste dans les deux sens, du premier vers le dernier élément ou inversement. • Liste circulaire où le dernier élément pointe sur le premier élément de la liste. S'il s'agit d'une liste doublement chaînée alors de premier élément pointe également sur le dernier.
  • 8. 4. Représentation des données • Une liste chaînée simple est composée : ➢d'un ensemble d'éléments tel que chacun : ▪ est rangé en mémoire à une certaine adresse, ▪ contient une donnée (Info), ▪ contient un pointeur, souvent nommé Suivant, qui contient l'adresse de l'élément suivant dans la liste, ➢d'une variable, appelée Tête, contenant l'adresse du premier élément de la liste chaînée. • Le pointeur du dernier élément contient la valeur Nil. • Dans le cas d'une liste vide le pointeur de la tête contient la valeur Nil. • Une liste est définie par l'adresse de son premier élément.
  • 9. 4. Représentation des données • Soit la liste chainée suivante: • Le 1er élément de la liste vaut 12 à l'adresse 3 (début de la liste chaînée) • Le 2e élément de la liste vaut 14 à l'adresse 4 (car le pointeur de la cellule d’adresse 3 est égal à 4) • Le 3e élément de la liste vaut 10 à l'adresse 2 (car le pointeur de la cellule d’adresse 4 est égal à 2) • Le 4e élément de la liste vaut 24 à l'adresse 1 (car le pointeur de la cellule d’adresse 2 est égal à 1) • Si P a pour valeur 3 : P^.Info a pour valeur 12 et P^.Suivant a pour valeur 4 • Si P a pour valeur 2 : P^.Info a pour valeur 10 et P^.Suivant a pour valeur 1
  • 10. 4. Représentation des données • La structure de donnée qui permet de représenter une liste chaînée dans le cas général est déclarée comme suit : • Ainsi le type Liste est un pointeur vers le type Element qui est un enregistrement formé de deux champs : un qui contient la valeur de l’élément et le 2ème champ contient un pointeur vers la cellule suivante. • La dernière cellule ne pointe vers rien donc elle doit contenir la valeur Nil. • Le type Liste contient un pointeur vers le type Element qui contient l’adresse du 1er élément de la liste. Type Element = enreg valeur : type suivant : ^Element FinEnreg Liste : ^ Element
  • 11. 5. Opérations sur les listes • Le test si la liste est vide. • Calculer la longueur d'une liste (nombre d'éléments) • Ajouter un élément: • au début de la liste • à la fin de la liste • à un rang donné • Rechercher un élément: • résultat booléen • résultat = rang de la première occurrence • résultat = nombre d'occurrences • Supprimer un élément: • caractérisé par sa valeur • caractérisé par son rang
  • 12. 5. Opérations sur les listes
  • 13. 5. Opérations sur les listes • Implémentation des primitives • Type Element = Enreg val : entier suiv : ^Element FinEnreg Liste = ^ Element var L : Liste
  • 14. Activité 1: • Ecrire une procédure Init(L) qui permet d’initialiser une liste L • Ecrire une fonction Vide(L) qui permet de tester si une liste L est vide ou non 14
  • 15. • Procédure Init • Fonction Vide Procédure Init (Var L : Liste) Début L ← Nil Fin Fonction Vide (L : Liste): Booléen Début Vide ← (L = Nil) Fin
  • 16. Activité 2: • Ecrire une fonction Taille(L) qui revoie la taille d’une liste L • Ecrire une fonction premier(L) qui revoie la valeur du premier élément d’une liste L • Ecrire une fonction Dernier(L) qui revoie la valeur du dernier élément d’une liste L 16
  • 17. Fonction Taille (L : Liste) : entier var T : entier P : Liste Début T ← 0 P ← L Tant que (P ≠ Nil) faire P ← P^.suiv T ← T + 1 Fin tant que Taille ← T Fin Fonction Dernier (L : Liste) : entier Var P : Liste Début P ← L Tant que (P^.suiv ≠ Nil) faire P ← P^.suiv Fin Tant que Dernier ← P^.val Fin
  • 18. Fonction Premier Fonction Premier (L : Liste) : entier Début Si (Non Vide (L)) alors Premier ← L^.val Finsi Fin
  • 19. Activité 3: • Ecrire une procédure InsererDebut(var L:Liste, x:entier) qui permet d’ajouter un élément au début de la liste • Ecrire une fonction InsererFin(Var L:Liste,x: entier) qui permet d’ajouter un élément à la fin de la liste • Ecrire une fonction SupprimerDebut(Var L: Liste) qui permet de supprimer le premier élément de la liste • Ecrire une fonction Face (L: liste):Liste qui permet de supprimer le dernier élément de la liste 19
  • 20. Procédure InsererDebut Procédure InsererFin Procédure InsererDebut (Var L : Liste, x : entier) var p: Liste Début Allouer (p) p^.val ← x p^.suiv ← L L ← p Fin Procédure InsererFin (Var L : Liste, x : entier) var p,q : Liste Début p ← L Tant que ((p^.suiv) ≠ Nil) Faire p ← p^.suiv Fin Tant que Allouer (q) q^.val ← x q^.suiv ← Nil p^.suiv ← q Fin
  • 21. 5. Opérations sur les listes Fonction Face Fonction Face (L : Liste) : Liste Var P, K : Liste Début Si (Taille (L)=1) alors Face ← Nil Sinon P ← L Init(K) Tant que ((P^.suiv) ^.suiv ≠ Nil) faire InsererFin (K, P^.val) P ← P^.suiv Fin Tant que InsererFin (K, P^.val) P^.suiv ← Nil Face ← K Fin si Fin
  • 22. 5. Opérations sur les listes Procédure SupprimerDebut Procédure SupprimerDebut (Var L : Liste) Var P : Liste Début Si (L <> Nil) alors P ← L L ← L^.suiv Libérer (P) -- permet de libérer l’espace mémoire relatif à P Finsi Fin
  • 23. 6. Liste doublement chainée • Ce type de structure de données est quasiment identique à la précédente sauf que chaque maillon possède un pointeur vers l’élément précédent. • C’est une liste dans laquelle on pourra se déplacer en avant ou en arrière. • chaque élément contient, en plus du champ suivant, un champ prédécesseur qui est un pointeur sur l’élément précédant dans la liste. • Si le champ prédécesseur d’un élément vaut Nil, cet élément n’a pas de prédécesseur et est donc le premier élément ou la tête de la liste.
  • 24. 6. Liste doublement chainée Type Element = Enreg val : entier suiv : ^Element pred: ^Element FinEnreg Liste = ^Element var L : Liste
  • 25. 7. Liste circulaire • ce type de liste n’est pas linéaire mais cyclique, c’est à dire que le dernier élément pointe vers le premier. • Des traitements particuliers doivent être faits puisqu’il faut tenir compte du fait que le Nil n’existe plus pour représenter le dernier élément. • La taille de la liste doit être toujours mise à jour.