A voir également:
- Idée appli
- Comment desinstaller une appli sur pc - Guide
- Appli gps sans internet - Guide
- Appli canva - Télécharger - Divers Photo & Graphisme
- Appli calculatrice - Télécharger - Calcul & Conversion
- Appli traduction photo - Guide
2 réponses
KX
Messages postés
16733
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
31 janvier 2024
3 015
23 févr. 2018 à 00:28
23 févr. 2018 à 00:28
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é.
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é.
Utilisateur anonyme
23 févr. 2018 à 10:06
23 févr. 2018 à 10:06
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.
KX
Messages postés
16733
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
31 janvier 2024
3 015
23 févr. 2018 à 10:47
23 févr. 2018 à 10:47
"programmer son fonctionnement à partir d'un tableau (Array)"
Une liste chaînée ne peut pas être codée avec un tableau... ou alors ce n'est plus une liste chaînée.
Une liste chaînée ne peut pas être codée avec un tableau... ou alors ce n'est plus une liste chaînée.
KX
Messages postés
16733
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
31 janvier 2024
3 015
>
Utilisateur anonyme
23 févr. 2018 à 13:42
23 févr. 2018 à 13:42
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 :
Avantages :
Inconvénient :
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)
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)