Liste doublement chainée
Bonjour,
Je dois implémenter une liste doublement chainée, y a t'il des exemples fiable + des explications sur les pointeurs etc?
Je ne sais pas très bien par ou commencer
Merci
Je dois implémenter une liste doublement chainée, y a t'il des exemples fiable + des explications sur les pointeurs etc?
Je ne sais pas très bien par ou commencer
Merci
2 réponses
-
ModérateurBonjour,
"des explications sur les pointeurs"
Il n'y a pas de pointeurs en Java...
"y a t'il des exemples fiable"
Voici une structure de liste qui devrait fonctionner :public class ListeDoublementChainee<E> { private Chaine<E> premiere, derniere; private class Chaine<E> { private E element; private Chaine<E> precedente, suivante; } }
La confiance n'exclut pas le contrôle-
-
-
Je pense avoir compris, cependant je ne suis pas sur de ma logique, qu'en pense tu de cette méthode?
public void insererEnTete(E element) { Chaine n = new Chaine(null, element, null); n.precedent = tete.suivant; n.suivant = queue.precedent; tete.suivant = n; queue.precedent = n; numVersion++; taille++; } -
Modérateur
n.precedent = tete.suivant; n.suivant = queue.precedent;
Cela veut dire que n est à la fois le suivant de la tête et le précédent de la queue, c'est à dire qu'il est au milieu des deux ? Ça ne peut pas être correct.
Quelques remarques/questions ?- Pourquoi mettre null dans
new Chaine(null, element, null);
si c'est pour après affecter les valeursn.precedent
etn.suivant
? - En terme de nommage
tete
etqueue
sont de mauvais choix car cela correspond au vocabulaire des files, pas des listes. - Il te manque les cas initiaux, que se passe-t-il si
queue
outete
sont null ? - À quoi sert
numVersion
?
Il faudrait que tu testes ton code, tu peux commencer par faire la méthodetoString()
de la liste, ça te sera utile pour l'afficher et voir ses modifications successives. - Pourquoi mettre null dans
-
J'utilise
numVersion
pour un itérateur que j'implémente également.
J'ai fais untoString()
, au départ après 2 insertions javai bientaille == 2
mais mon toString n'affichai que le dernier element de ma liste.
Exemple: insere "a" puis "insere "b"
Je faisliste.toString()
et il m'affiche uniquement "b"
Maintenant après modification il m'affiche plus rienpublic void insererEnTete(E element) { Chaine n = new Chaine(tete, element, tete.suivant); n = tete.suivant; numVersion++; taille++; }
J'ai également mis au début et à la fin une chaine "bidon" sur laquelle la tete pointe histoire de ne jamais avoir de cas null quand j'ajoute un élément.
-