CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[Java] Petit problèmes avec les listes chaînées

ryviel
ryviel
Niveau 5
02 janvier 2015 à 19:36:04

Tu ne peux pas revenir en arrière dans une liste simplement chainée, à part en gardant la référence sur le première "cellule".

Le problème, c'est que tu donnes uniquement la partie "main" de ton code corrigé, sans la Liste corrigée, c'est dur de t'aider.

Sinon oui, mon histoire de Cellule est bien une liste chainée. Une cellule est "chainée" à une autre. Je te conseille de revoir le concept complet de liste chainée car cela n'a pas l'air bien clair dans ta tête.

Explication de ma Liste et Cellule.

La Cellule correspond à la valeur stockée, ainsi qu'au lien vers une autre Cellule, qui se trouve donc être la suivante dans la liste chainée. La référence est null au départ, étant donné qu'on ne créé qu'une cellule simple qui n'est reliée à aucune autre.

La liste peut-être vue comme une classe "utilitaire" qui te permet de manipuler les Cellules sans avoir à les créer manuellement dans ton "main" par exemple. Dans cette liste, on garde toujours une référence sur la toute première Cellule qui est la tête de liste. Cette référence ne change pas une fois la première cellule créée.
On garde aussi une référence vers la dernière cellule, et donc changera au fur et à mesure que l'on ajoute des cellules. De cette manière, nous pouvons ajouter directement en fin de liste, sans avoir à parcourir toute la liste chainée (c'est à dire parcourir toutes les cellules) pour trouver la dernière cellule. Il suffit donc de créer une Cellule simple, contenant la valeur que l'on souhaite ajouter (passée en paramètre de méthode). Cette cellule est "chainée" à notre dernière cellule de la liste. C'est à dire qu'on stock la référence de notre nouvelle cellule dans la dernière cellule. Vu que l'on viens d'ajouter une nouvelle cellule, nous changeons notre référence de la dernière cellule vers la cellule que l'on viens de créer.

La méthode getValeur permet juste de récupérer la valeur qui se trouve à l'index donné (0 pour la première etc ...)
La méthode toString parcours toutes les cellules une par une à partir de la première, et construit une chaine de caractère contenant chacune des valeurs.

Il est tout à fait possible de fusionner les deux, c'est à dire ce que tu essayes de faire, mais je trouve cela plus compliqué à comprendre (donc en gros, une liste est juste composée d'une valeur et d'une "sous-liste")

De plus, si tu devais fournir ta classe Liste à quelqu'un, il devrait normalement uniquement utiliser les méthodes de cette classe, et ne pas devoir gérer autre chose (par exemple: ce que tu fais ligne 29 dans ton dernier code fournit, et qui est faux, vu que tu ne stock pas ce qui est retourné).

Si tu n'arrives toujours pas à comprendre, je te conseille de revoir la POO, comment programmer en Java et le concept de liste chainée.

EDIT: Les explications de TheMightyEagle aident aussi ! (Merci !)

Message édité le 02 janvier 2015 à 19:38:02 par ryviel
Vexallus
Vexallus
Niveau 10
02 janvier 2015 à 20:15:50

Att je vais lire mais en attendant j'ai rien touché à ma class liste hein :

http://pastebin.com/pZFN2HyW

Vexallus
Vexallus
Niveau 10
03 janvier 2015 à 22:57:46

J'ai pas mal avancé j'vous montre ça dans le pastebin en bas

Oui TheMightyEagle finalement j'ai corrigé pour la méthode inser parce que c'est vrai que c'était n'imp' :noel:

en fait j'ai compris j'avais un petit soucis j'utilise mal "queue()" j'crois qu'il faut queje fasse genre

s= s.queue();

sinon ça passe pas au truc suivant ça reste à s.tete(); comme un con :rire:

attendez j'vais essayer ce que vous m'avez dit juste après

Sous forums
  • Aide à l'achat Mac
  • Création de sites web
  • Internet
  • Macintosh
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware
La vidéo du moment