La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

CSI2510 Structures des Données et Algorithmes

Présentations similaires


Présentation au sujet: "CSI2510 Structures des Données et Algorithmes"— Transcription de la présentation:

1 CSI2510 Structures des Données et Algorithmes
CSI Paola Flocchini

2 Structures de données? Comment organiser les données pour optimiser l’efficacité des opérations qu’il faut effectuer sur les données CSI2510 CSI Paola Flocchini

3 Structures de données? Exemple: Contient des données différents:
l‘annuaire de téléphone électronique Pierre Contient des données différents: - Des noms Des numéro de téléphone Des adresses Michele 75 Bronson Sylvie 110 Bank Paola OPERATIONS: - ajouter - effacer chercher un numéro de téléphone chercher une adresse CSI2510 CSI Paola Flocchini

4 Structures de données? Exemple: Lisa 223-4433 Pierre 543-1234 Michael
Michele John 110 Bank 75 Bronson Paola Lisa Pierre Michael Anne Lisa Pierre Michael Anne Lisa Pierre Michael Anne CSI2510 CSI Paola Flocchini

5 Structures de données? Exemple: Anne 321-6745 Lisa 223-4433 Pierre
Michele John 110 Bank 75 Bronson Paola Anne Lisa Pierre Michael CSI2510 CSI Paola Flocchini

6 Structures de données? Penser aux opérations que vous avez besoin d’exécuter. 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 ? CSI2510 CSI Paola Flocchini

7 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 similaires, et choisir la meilleure CSI2510 CSI Paola Flocchini

8 Rappel Tableaux Structures chaînées CSI2510 1 2 3 4 5 6 7
1 2 3 4 5 6 7 NULL CSI2510 CSI Paola Flocchini

9 Opérations typiques sur les objets Insérer un objet Supprimer un objet
Chercher un objet CSI2510 CSI Paola Flocchini

10 Tableau A: structure statique accès direct aux cellules
1 2 3 4 5 6 7 A: Ensemble de longueur fixe, composé de cellules indexées contenant des variables du même type. structure statique accès direct aux cellules Insertion ? Suppression ? CSI2510 CSI Paola Flocchini

11 Tableau a c d m o f Un exemple d’insertion dans un tableau trié 1 2 3
1 2 3 4 5 6 7 f Un exemple d’insertion dans un tableau trié CSI2510 CSI Paola Flocchini

12 Tableau a c d m o a c d m o a c d m o a c d f m o f
Déplacer ‘m’ et ‘o’ pour faire de la place pour ‘f’ f a c d m o 1 2 3 4 5 6 7 a c d m o 1 2 3 4 5 6 7 a c d m o 1 2 3 4 5 6 7 a c d f m o 1 2 3 4 5 6 7 CSI2510 CSI Paola Flocchini

13 Tableau a c d f m o p z 1) Pour des insertions et des suppressions,
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? CSI2510 CSI Paola Flocchini

14 Structures chaînées Structure dynamique Accès séquentiel aux éléments
NULL Structure dynamique Accès séquentiel aux éléments Ajout et suppression sans déplacer les éléments CSI2510 CSI Paola Flocchini

15 Liste simplement chaînée
NULL Nœud v Suivant (next) Objet élément Nœud suivant v élément CSI2510 CSI Paola Flocchini

16 Liste simplement chaînée
L’implémentation en Java sera traitée durant les séances de laboratoire Une liste chaînée possède normalement ces méthodes: setElement(Object e) setNext(Object newNext) getElement() getNext() La liste chaînée (SlinkedList) est définie par le nœud tête (head) et par sa taille (size) CSI2510 CSI Paola Flocchini

17 Liste simplement chaînée - Insertion
Configuration originale: head NULL v But: insérer l’élément v dans la liste. CSI2510 CSI Paola Flocchini

18 Insertion au début d’une liste
simplement chaînée head head  v size  size+1 NULL v.setNext(head) v (facile) … Nous utilisons pseudocode … head  v == la variable head aura la valeur de la variable v CSI Paola Flocchini CSI Paola Flocchini

19 Liste simplement chaînée : Insertion après r
w r head NULL v w  getNext(r ) v.setNext(w) r.setNext(v) size size+1 Facile CSI2510 CSI Paola Flocchini

20 r h v Liste simplement chaînée : Insertion avant r
NULL v 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. (plus difficile) CSI2510 CSI Paola Flocchini

21 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 {………..} CSI2510 CSI Paola Flocchini 21

22 Liste simplement chaînée - Recherche
head NULL tmp Node tmp; tmp  firstnode; while (tmp != null ) { if (tmp.element = élément qu’on recherche) return tmp ; } else { tmp tmp.getNext() } Traverser la liste CSI2510 CSI Paola Flocchini 22

23 Liste simplement chaînée - Suppression
head NULL Premier élément (facile) Élément après r (facile) Élément à r (difficile) head  head.getNext() … w  r.getNext() r.setNext(w.getNext()) ….. 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! CSI2510 CSI Paola Flocchini

24 Liste doublement chaînée
trailer header Suivant(next) Précédent (prev) 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) Noeud(DNode) CSI2510 CSI Paola Flocchini

25 Liste doublement chaînée
trailer header Méthodes de la classe Dnode: void setElement(Object e) void setPrev(DNode newPrev) void setNext(DNode newNext) Object getElement() DNode getPrev() DNode getNext() 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) CSI2510 CSI Paola Flocchini

26 Liste doublement chaînée –Suppression (début)
Supprimer v u v.getPrev() u w v.getNext() w v u.setNext(w) trailer header w.setPrev(u) v.setPrev(null) v.setNext(null) size size-1 CSI2510 CSI Paola Flocchini

27 Liste doublement chaînée –Suppression (milieu)
w Supprimer v u v trailer header u v.getPrev() w v.getNext() w.setPrev(u) u.setNext(w) v.setPrev(null) v.setNext(null) size size-1 CSI2510 CSI Paola Flocchini 27

28 Liste doublement chaînée - Insertion (début)
w Insérer v header trailer v w header.getNext() v.setNext(w) v.setPrev(header) w.setPrev(v) header.setNext(v) Size  size+1 CSI2510 CSI Paola Flocchini 28

29 Liste doublement chaînée - Insertion (après p)
w header Insérer v après p trailer v w p.getNext() v.setNext(w) v.setPrev(p) w.setPrev(v) p.setNext(v) size  size+1 CSI2510 CSI Paola Flocchini 29

30 Liste doublement chaînée - Insertion (avant p)
Insérer v avant p header trailer v p header trailer v CSI2510 CSI Paola Flocchini 30

31 Conclusion: Structures chaînées vs Tableaux
trailer header 1 2 3 4 5 6 7 Structure Chaînée Tableau Structure dynamique (jamais pleine) Structure figée Pas besoin de déplacer les éléments lors des insertions - suppressions Insertions suppressions des éléments plus laborieuses Pas d’accès direct à un élément donné de la structure (parcours de la structure obligatoire) Accès direct à une cellule donnée CSI Paola Flocchini CSI Paola Flocchini 31


Télécharger ppt "CSI2510 Structures des Données et Algorithmes"

Présentations similaires


Annonces Google