Idée appli

Fermé
helloworld - 23 févr. 2018 à 00:02
 Utilisateur anonyme - 23 févr. 2018 à 14:16
Bonjour,

Je cherche une idée d'application très simple qui utiliserai au mieux une linkedlist

Merci


A voir également:

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
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é.
0
Utilisateur anonyme
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.
0
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
"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.
0
Utilisateur anonyme
23 févr. 2018 à 12:53
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
0
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
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)
0
Utilisateur anonyme
23 févr. 2018 à 14:16
Oui, enfin cet exercice permet de bien comprendre dans le détail comment fonctionne une LinkedList (puisqu'on programme son fonctionnement) en plus de développer ses capacités à programmer. Evidemment, c'est une usine à gaz de faire ça mais c'est purement pédagogique
0