Structures de données Flashcards
Défini la notion de structure de données
Une structure de données est un format d’organisation, de gestion et de stockage de données qui permet des accès et des modifications efficaces.
Donne des exemples de structure de donnée
Tableaux, classes (la classe Etudiant permet de stocker, accéder et modifier les données d’étudiants : prénom, nom, matricule…)
Quelles sont les limitations concernant les tableaux en Java ?
- Sa taille doit être déterminée à l’avance
- Il ne s’agrandit pas
- Il n’est pas un objet
Défini l’abstraction d’une structure de donnée…
L’abstraction d’une structure de donnée est typiquement représentée par une interface. Il définit les opérations applicables sur les données.
… et son implémentation concrète
L’implémentation concrète est typiquement une classe qui implements l’interface. Il définit comment les données sont organisées et les opérations effectuées.
Donne un exemple d’une abstraction d’une structure de donnée + ses opérations
Liste d’éléments :
1. Obtenir la taille (le nombre d’éléments)
2. Obtenir l’élément à la position i
3. Modifier l’élément à la position i
4. Insérer un élément à la position i
5. Insérer un élément au début/à la fin
6. Supprimer l’élément à la position i
Vrai ou faux : Une liste est plus flexible qu’un tableau en java
Vrai, pas besoin de fixer la taille d’une liste ou de nombre maximal d’éléments à l’avance.
Donne une implémentation possible pour le type de données abstrait List
Utiliser un tableau pour stocker les éléments. En effet, un tableau stocke la séquence d’éléments de manière contiguë en mémoire.
Vrai ou faux : L’avantage d’un tableau est la performance pour accéder à un élément
Vrai, le temps de calcul de l’adresse de la case mémoire du ième élément se fait en temps constant, O(1)
adresse = début du tableau + i * taille d’une case
Comment ajouter un élément à la fin ?
Une liste permet d’ajouter un élément à la fin via la méthode add, par exemple .add(40)
Puisque les éléments doivent être contigus, la case qui suit le tableau doit être libre, dans quel cas on peut augmenter la taille du tableau sans problème et efficacement (sauf en Java)
Que faire (en Java) si la case n’est pas libre ?
Il faut allouer un nouveau tableau, ailleurs dans la mémoire, là où il y a assez de place pour mettre tous les éléments en plus de celui à ajouter
Existe-t-il d’autres solutions ?
Oui, les listes chaînées :
1. À chaque élément, on ajoute l’adresse mémoire (la référence) du prochain dans la liste.
2. Une paire (référence, élément) s’appelle noeud (node)
Comment obtenir les éléments dans les listes chaînées ?
En parcourant les noeuds
Vrai ou faux, un nouveau noeud peut être placé n’importe où en mémoire ?
Vrai
Vaut mieux utiliser les listes chainées ou les tableaux dynamiques ?
Ça dépend de l’application. Beaucoup de modifications/accès en début de liste => Liste chainées.
Beaucoup d’accès aux éléments partout dans la liste => Tableau Dynamique