Idée appli
helloworld
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour,
Je cherche une idée d'application très simple qui utiliserai au mieux une linkedlist
Merci
Je cherche une idée d'application très simple qui utiliserai au mieux une linkedlist
Merci
2 réponses
-
Bonjour,
LinkedList est surtout utile comme implémentation des interfaces Deque et Queue, il serait peut-être judicieux de s'intéresser à celles-ci pour "utiliser au mieux" la LinkedList.
https://docs.oracle.com/javase/9/docs/api/java/util/Deque.html
Exemple : la modélisation d'une file d'attente au supermarché. -
Peut-être serait-il intéressant de ne pas utiliser directement la LinkedList mais de programmer son fonctionnement à partir d'un tableau (Array) ou de l'implémentation de l'interface List.
-
-
On peut imaginer définir un tableau avec une grande taille fixée à l'avance (200 par exemple) dans une classe qui implémente les méthodes d'une LinkedList. J'ai déjà fait ça en C, le seul soucis ici serait de rendre dynamique la taille du tableau
- L'intérêt de la liste chaînée est de pouvoir ajouter/supprimer des éléments au début, au milieu ou à la fin de la liste. Or si tu fais ça dans un tableau (ce que fais l'ArrayList par exemple), à chaque insertion/suppression tu vas devoir décaler tous tes éléments pour qu'ils restent contiguës, ce qui est très coûteux, en particulier dans le cas des files qui ne font que ce genre d'opérations.
Les listes chaînées ont une autre structure de données, avec davantage de références (pointeurs en C) qui permettent d'avoir des maillons indépendants que l'on peut ajouter/supprimer unitairement, sans impacter les autres maillons de la chaîne.
Exemple d'une liste doublement chaînée :
public class ListeChainee<E> { private Maillon<E> premier; private Maillon<E> dernier; } public class Maillon<E> { private Maillon<E> avant; private Maillon<E> apres; private E valeur; }
Avantages :- on n'a pas besoin d'allouer plus de mémoire que le nombre de maillons nécessaires à la chaîne
- très efficace pour l'ajout/suppression dans la liste.
Inconvénient :- unitairement chaque maillon est un petit peu plus gros en mémoire
- pas très efficace pour retrouver un élément en plein milieu de la liste (il faut tout parcourir)
C'est pour ça qu'il existe deux structures de données distinctes, totalement différentes et faire une "LinkedList" avec un tableau ça reviendrait à faire une ArrayList (mêmes avantages/inconvénients)
-
-