Académique Documents
Professionnel Documents
Culture Documents
Une liste linéaire (SDLL) est la représentation informatique d’un ensemble fini, de taille variable et
éventuellement nul d’éléments d’un type ordonné.
Listes linéaires
Les listes peuvent être homogènes ou hétérogènes. On s’intéresse aux listes homogènes de type T.
Une liste est une structure linéaire particulièrement souple, ses éléments peuvent être insérés ou
supprimés à n’importe quel endroit, contrairement aux structures de données pile et file (prochains
chapitres).
FAR AH FOU R AT I
Mathématiquement, une LL comporte des éléments cités dans un ordre donnée.
C O U R S AT EL I ER DE P R O G R A MMAT I O N 2
LSI1 - A U 2 0 2 3 -2 0 2 4
Par exemple ll1=(t1, t2, t3, t4, t5).
Me contacter : farah.fourati@issatso.u-sousse.tn
Ø Aspect de mémorisation : elle stocke un ensemble d’éléments qLes opérations de consultation : elles permettent de fournir des renseignements sur l’état de la SD. Elles
laissent la SD inchangée.
Ø Aspect opérations : opérations applicables sur cette SD qLes opérations de modification : elles agissent sur la SD.
Dans la suite, on distingue : les opérations atomiques (ou élémentaires) et les opérations élaborés.
vReprésentation physique chainée : les éléments d’une SD sont placés à des endroits
quelconques de la mémoire centrale mais chainés (ou reliés). Les éléments sont reliés d’une
façon explicite. Idée : pointeurs.
- avant premier : décalage à droite de tous les éléments, elle dépend de la longueur de la liste
- après dernier : zéro décalage
- qlq part au milieu : ça nécessite des décalages à droite
premier dernier
premier
Dans cette représentation, le premier et le dernier élément sont favorisés : accès direct => c’est
la variante courante
L’adjonction dans une liste linéaire (LL) concrétisée à l’aide d’une représentation chaînée n’exige
pas de décalages contrairement à la représentation contiguë.
À partir d’un élément donné, on peut passer soit à son successeur soit à son prédécesseur.
Le successeur du dernier élément n’existe pas. Et également, le prédécesseur du premier
élément n’existe pas.
struct liste{
struct noeud *premier; dernier
struct noeud *dernier;
};
Les variables stockés dans le Heap sont appelés variables dynamiques ØOpérations d’adjonction ou d’insertion
üAjouter avant le premier: void ajouter_premier(int info, struct liste *ll)
Un pointeur en C sert souvent à repérer une variable dynamique. (premier est une variable de üAjouter après le dernier: void ajouter_dernier(int info, struct liste *ll)
type pointeur) üAjouter quelque part au milieu
En C : premier=NULL ; /*NULL est une macro est la valeur d'un pointeur nulle part, il s’agit d’une ü Après un élément référencé : void ajouter_apres(int info, struct noeud *p)
constante symbolique appartenant aux bibliothèques stdio.h, stdlib.h, alloc.h*/ ü Avant un élément référencé : void ajouter_avant(int info, struct noeud *p)
ØOpérations de suppression
• Supprimer premier : void supprimer_premier(struct liste *ll)