Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
1
Structure de données Les listes
2
Structure de données Liste
Structure de données permettant de conserver des données consécutivement de façon linéaire. Services offerts : Insérer un élément Enlever un élément Chercher un élément La liste est-elle vide ? Nombre d’éléments ...
3
Structure de données Implémentation Dans un tableau statique Par chaînage dynamique Dans tous les cas on peut faire l’implémentation en conservant des informations sur la liste à l’extérieur de la liste
4
Structure de données Représentation graphique Dans un tableau statique
Simplement chaînée Doublement chaînée
5
Structure de données Représentation graphique avec infos sur la liste Nombre d’éléments Debut Fin 4 Information supplémentaire
6
Structure de données Implémentation du déplacement
À partir d’un indice (comme un tableau) On passe toujours l’indice en paramètre Ex: liste.insere(element,2); //insère à la 2ième position À partir d’une position courante implicite dans la liste L’insertion se fait toujours à une position courante Exemple : liste.premier(); //position au premier élément liste.suivant(); //passe au suivant liste.insere(element); //insère à la 2ième position
7
Structure de données Via un itérateur (une classe définie) fourni par la liste. L’utilisateur peut obtenir l’itérateur de la liste Iterateur position = liste.iterateur(); position.suivant() //déplace l’itérateur position.insere(element); *Rend le déplacement vraiment indépendant de la liste. *C’est la version implémentée dans Java (java.util.LinkedList et java.util.ListIterator)
8
Structure de données Exemple d’une classe itérateur La liste
Lien sur le précédent Position courante Un objet de la classe Iterateur
9
Structure de données Pourquoi choisir une implémentation plutôt qu’une autre ? Tableau statique Nombre d’éléments maximum connu Données de petite taille Simplement chaînée Nombre d’éléments maximum inconnu, beaucoup d’insertion et peu de recherche Données de grande taille (autre langage que Java)
10
Structure de données Pourquoi choisir une implémentation plutôt qu’une autre ? Doublement chaînée Nombre d’éléments maximum inconnu, peu d’insertion et beaucoup de recherche Itérateur Sauve de l’espace mémoire par rapport à la liste doublement chaînée Rendre l’itérateur indépendant de la liste Peut avoir plusieurs itérateurs sur une même liste
11
Structure de données Que faire pour implémenter une liste ?
Décider du choix de l’implémentation Décider des services à offrir Implémenter un service à la fois Tester tous les scénarios possibles (début, milieu, fin, vide) pour un service avant de passer au suivant Tester des combinaisons (insère, insère , cherche , supprime, insère,...)
12
Liste que nous implémenterons Debut Fin Nombre Éléments
Structure de données Liste que nous implémenterons Debut Fin Nombre Éléments Position courante 4
13
Retour sur la pile et la file
Structure de données Retour sur la pile et la file
14
Structure de données Implémentation d’une pile en composant avec une liste On peut voir la pile comme un cas particulier d’une liste. Empile //insèreDébut Depile //getElement + supprime estVide //estVide Vider //supprimeTout DepileSansEnlever //getElement
15
Structure de données Implémentons d’une file avec une liste
On peut voir la file comme un cas particulier d’une liste. Enfile //insère à la fin Defile //premier + getElement() + supprime estVide //estVide Vider //supprimeTout DefileSansEnlever //premier + getElement()
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.