CSI 2510 Structures des Donnes et Algorithmes CSI































- Slides: 31
CSI 2510 Structures des Données et Algorithmes CSI 2510 1
Structures de données? Comment organiser les données pour optimiser l’efficacité des opérations qu’il faut effectuer sur les données CSI 2510 2
Structures de données? Exemple: l‘annuaire de téléphone e rr e Pi 9 622 - Contient des données différentes: - Des noms - Des numéro de téléphone - Des adresses Sy lvi Pa e ola 75 on Brons 4433 112 - 823 M ic he le k 0 11 n Ba OPERATIONS: - ajouter des données - Effacer des données - cher un numéro de téléphone - cher une adresse CSI 2510 3
Structures de données? Exemple: a 9823 M ic he 75 le n o Brons Jo nk hn Ba Pa 10 ola 1 4433 112 s Li Lisa 223 -4433 Pierre 543 -1234 Michael 123 -4567 Anne 321 -6745 Lisa 223 -4433 Michael 123 -4567 Pierre 543 -1234 Anne 321 -6745 Lisa 223 -4433 Michael 123 -4567 CSI 2510 622 - Pierre 543 -1234 4
Structures de données? Exemple: a 9823 M ic he 75 le n o Brons Jo nk hn Ba Pa 10 ola 1 4433 112 s Li Anne 321 -6745 Lisa 223 -4433 622 - Pierre 543 -1234 Michael 123 -4567 CSI 2510 5
Structures de données? Penser aux opérations que vous avez besoin d’effectuer. Choisir la meilleure structure pour vos données. Nous allons étudier les différentes structures de données. Comment savoir si une structure de données est bonne ? CSI 2510 6
Les objectifs du cours Présenter, de façon systématique, les structures de données le plus utilisées, en soulignant leurs propriétés abstraites. Discuter des algorithmes typiques qui traitent chaque type de structure, et analyser leur performance. Comparer les différentes structures de données pour résoudre des problèmes, et choisir la meilleure CSI 2510 7
Rappel • Tableaux 0 1 2 3 4 5 6 7 • Structures chaînées NULL CSI 2510 8
Opérations typiques sur les objets Insérer un objet Supprimer un objet Chercher un objet CSI 2510 9
Tableau A: 0 1 2 3 4 5 6 7 Ensemble de longueur fixe, composé de cellules indexées contenant des variables du même type. • structure statique • accès direct aux cellules CSI 2510 Insertion ? Suppression ? 10
Tableau a c d m o 0 1 2 3 4 5 6 7 f Un exemple d’insertion dans un tableau trié CSI 2510 11
Tableau Déplacer ‘m’ et ‘o’ pour faire de la place pour ‘f’ a c d 0 1 a f m o 2 3 4 c d m 0 1 2 3 a c d 0 1 2 a c 0 1 5 6 7 6 7 o 4 5 m o 3 4 5 d f m o 2 3 4 5 CSI 2510 12
Tableau a c d f m o p z 0 1 2 3 4 5 6 7 1) Pour des insertions et des suppressions, les éléments doivent être déplacés. 2) et si le tableau est plein? CSI 2510 13
Structures chaînées NULL • Structure dynamique • Accès séquentiel aux éléments • Ajout et suppression sans déplacer les éléments CSI 2510 14
Liste simplement chaînée NULL Nœud v Objet élément v Suivant (next) Nœud suivant élément CSI 2510 15
Liste simplement chaînée Une liste chaînée possède normalement ces méthodes: • set. Element(Object e) • set. Next(Object new. Next) • get. Element() • get. Next() La liste chaînée (Slinked. List) est définie par le nœud tête (head) et par sa taille (size) CSI 2510 16
Liste simplement chaînée - Insertion Configuration originale: head NULL v But: insérer l’élément v dans la liste. CSI 2510 17
Insertion au début d’une liste simplement chaînée head NULL v v. set. Next(head) head v size+1 (facile) CSI 2510 18
Liste simplement chaînée : Insertion après r w r head NULL v w get. Next(r ) v. set. Next(w) r. set. Next(v) size+1 Facile CSI 2510 19
Liste simplement chaînée : Insertion avant r r h NULL v (plus difficile) üMaintenir un pointeur à l’élément précédant (parcourir le liste) ou ü Échanger les contenus pointés par r et v et insérer v après r. CSI 2510 20
Liste simplement chaînée - Recherche head NULL tmp Traverser la liste Node tmp; tmp firstnode; while (tmp != null ) { if (tmp. element = élément qu’on recherche) { return tmp ; } else {………. . } } return tmp ; CSI 2510 21
Liste simplement chaînée - Recherche head NULL tmp Node tmp; Traverser la liste tmp firstnode; while (tmp != null ) { if (tmp. element = élément qu’on recherche) { return tmp ; } else { tmp. get. Next() } } return tmp ; CSI 2510 22
Liste simplement chaînée - Suppression r head NULL Premier élément (facile) head. get. Next() … Élément après r (facile) w r. get. Next() r. set. Next(w. get. Next()) …. . Élément à r (difficile) • Utiliser un pointeur à l’élément précédant, ou • Échanger les contenus de l’élément à r avec les contenus de l’élément suivant, et effacer l’élément après r. **Très difficile si r indique dernier élément! CSI 2510 23
Liste doublement chaînée trailer header Précédent (prev) Noeud(DNode) Suivant(next) Chaque nœud (Dnode) contient: ü Un élément (element) ü Un lien vers le nœud précédent (prev) ü Un lien vers le nœud suivant (next) CSI 2510 24
Liste doublement chaînée trailer header Méthodes de la classe Dnode: • void set. Element(Object e) • void set. Prev(DNode new. Prev) • void set. Next(DNode new. Next) • Object get. Element() • DNode get. Prev() • DNode get. Next() La liste doublement chaînée (DList) est définie par les deux nœuds spéciaux tête (header) et queue (trailer) et par sa taille (size) CSI 2510 25
Liste doublement chaînée –Suppression (début) u v Supprimer v w trailer header u v. get. Prev() w v. get. Next() w. set. Prev(u) u. set. Next(w) v. set. Prev(null) v. set. Next(null) size-1 CSI 2510 26
Liste doublement chaînée –Suppression (milieu) Supprimer v u v w trailer header u v. get. Prev() w v. get. Next() w. set. Prev(u) u. set. Next(w) v. set. Prev(null) v. set. Next(null) size-1 CSI 2510 27
Liste doublement chaînée - Insertion (début) header w Insérer v trailer v w header. get. Next() v. set. Next(w) v. set. Prev(header )w. set. Prev(v) header. set. Next(v) Size size+1 CSI 2510 28
Liste doublement chaînée - Insertion (après p) p header w Insérer v après p trailer v w p. get. Next() v. set. Next(w) v. set. Prev(p) w. set. Prev(v) p. set. Next(v) size+1 CSI 2510 29
Liste doublement chaînée - Insertion (avant p) header p Insérer v avant p trailer v p header trailer v CSI 2510 30
Conclusion: Structures chaînées vs Tableaux trailer header 0 1 2 3 Structure Chaînée Structure dynamique (jamais pleine) Pas besoin de déplacer les éléments lors des insertions suppressions 4 5 6 7 Tableau Structure figée Insertions suppressions des éléments plus laborieuses Pas d’accès direct à un Accès direct à une cellule élément donné de la structure donnée CSI 2510 - Paola Flocchini 31 (parcours de la structure