enchainés. • Les éléments d’une chaines s’appellent des nœuds (ou maillon, élément, etc.). • Chaque nœud est constitué de deux parties: données et pointeur. • Le pointeur enchaine un nœud à son suivant. • Vous pouvez simuler les listes chainées à un train. 2
qui change durant l’exécution. – Les noeuds successifs sont connectés par des pointeurs. – Le dernier noeud pointe sur NULL. – Elle peut augmenter ou diminuer en taille lors de l'exécution d'un programme. – Elle ne perd pas d'espace mémoire. 3 A B C Tête
doit connaitre le pointeur sur le 1er élément de la liste (appelé début, tête, etc.). • Les listes chainées sont flexibles en ajout d’éléments pour être réarrangées efficacement. – Insérer un élément. – Supprimer un élément. 4
maintenant le nouvel élément. – Le pointeur suivant du nouvel enregistrement est configuré pour le lier à l'élément qui le suit dans la liste. – Le pointeur suivant de l'élément qui doit précéder doit être modifié pour pointer vers le nouvel élément. • Suppression: – Le pointeur suivant de l’élément qui précède immédiatement celui à supprimer est modifié pour pointer vers le suivant de l’élément supprimé. 7
enregistrement). • Soit la structure d’un noeud, et un type de données appelé noeud defini à partir de cette structures: typedef struct noeud { int val; LISTE suiv; } noeud; 9
nommé “LISTE” qui est un pointeur qui pointe sur un noeud. typedef struct noeud *LISTE • On peut donc déclarer un nouveau pointeur nomée “tete” par: LISTE tete; 10
nœuds dans la liste chaînée initiale: – Allouer n enregistrements, un par un. – Lire les champs des enregistrements – Modifier les chainages des noeuds pour que la chaine soit formée. 14 A B C tete
construite et tete pointe sur le 1er élément de la liste, – Suivre les pointeurs – Afficher les contenus des noeuds comme ils sont parcourus. – S’arrêter quand le pointeur suiv pointe vers NULL. 16
Seulement un seul pointeur suiv devra être modifié. • Tete pointera sur le nouveau noeud. • Le nouveau noeud pointera sur l’ex premier élément. • Quand un noeud est ajouté à la fin, – Deux pointeurs suiv seront modifiés • Le dernier noeud pointe sur le noeud ajouté • Le nouveau noeud pointe sur NULL. • Quand un noeud est ajouté au milieu, – Deux pointeurs suiv seront modifiés • Le noeud précédent pointe sur le noeud ajouté • Le nouveau noeud pointe sur le noeud suivant. 19