IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

Implémentation d'une liste chainée


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 29
    Par défaut Implémentation d'une liste chainée
    bonjour ,

    je reviens vers vous pour un autre blocage (ou de l'incompréhension plutôt)

    Mes Class :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
    public class FileDAttenteStations {
     
    	ListeStations tete;
    	ListeStations queue;
     
    	public FileDAttenteStations() {
     
    		this.tete = null;
    		this.queue = null;
     
    	}
     
    	public void ajouterEnQueue(Station s) {
     
    		tete=new ListeStations (s,tete);
     
     
    	}
     
    	public Station retirerEnTete() {
     
    		return null;
     
    	}
     
    	public void afficher() {
     
    		if (tete != null)
    			tete.afficher();
    		else
    			System.out.println("File vide.");
     
    	}
     
    	public boolean estVide() {
     
    		return (tete == null);
     
    	}
     
    }
    -------

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    public class TestListeStations {
     
    				public static void main(String[] args) {
     
    			Station a = new Station("Saint-Jacques", "6", null);
    			Station b = new Station("Glacière", "6", null);
     
    			FileDAttenteStations f = new FileDAttenteStations();
     
    			f.ajouterEnQueue(a);
    			f.ajouterEnQueue(b);
     
    			System.out.print("Apres ajout en queue de Saint-Jacques puis Glacière : ");
    			f.afficher();
     
    		}
     
     
     
    }
    ------

    Mon résultat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Apres ajout en queue de Saint-Jacques puis Glacière :  6 - Glacière 6 - Saint-Jacques
    --------


    Le Problème est que je devrais obtenir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Apres ajout en queue de Saint-Jacques puis Glacière :  6 - Saint-Jacques 6 - Glacière

    d'avance merci.

  2. #2
    Membre chevronné Avatar de toutgrego
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2013
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2013
    Messages : 217
    Par défaut
    Salut,

    on peut voir ta classe 'ListeStation' ?

    Tchao!

    Ps : t'aimes bien la ligne 6 toi no ?

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 29
    Par défaut
    bien sur ! (un oublie)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    public class ListeStations {
     
    	Station station;
    	ListeStations suivant;
     
    	public ListeStations(Station station, ListeStations suivant) {
     
    		//initialisation des champs
    		this.station=station;
    		this.suivant=suivant;
     
    	}
     
    	public void afficher() {
     
     
    		ListeStations suite = this;
    		while (suite != null) {
     
    			System.out.print(" " +suite.station.chaineLigneNom());
    			suite = suite.suivant ;
     
    		}
     
    	}
     
    }


    et voila

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Salut,

    en fait tu chaines en insérant au début et pas à la fin ( la tête devient le nouvel élément inséré, )

    alors que tu affiches de la tête vers la fin, de suivant en suivant


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public void ajouterEnQueue(Station s) {
     
    		tete=new ListeStations (s,tete);
     
     
    	}
    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public ListeStations(Station station, ListeStations suivant) {
     
    		//initialisation des champs
    		this.station=station;
    		this.suivant=suivant;
     
    	}
    dans ton code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    f.ajouterEnQueue(a);
    f.ajouterEnQueue(b);
    soit le déroulement
    f.ajouterEnQueue(Saint-Jacques);

    donc tete = (this.station=Saint-Jacques,this.suivant=null)

    f.ajouterEnQueue(Glacière);

    tete = (this.station=Glacière,(this.station=Saint-Jacques,this.suivant=null))

    on voit bien que Saint Jacques est bien le suivante de Glacière

    à défaut de déboguer, toujours tenter une exécution avec un papier et un crayon et on voit assez rapidement ce qu'il se passe
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  5. #5
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Re,

    j'ai déjà abordé le sujet des listes chainées y'a pas très longtemps dans le forum.

    tu y trouveras peut être des infos intéressante

    voici la discussion : Discussion sur les listes chainées
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  6. #6
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 29
    Par défaut
    Merci de tes conseils ;

    j'ai pu débloquer avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    public void ajouterEnQueue(Station s) {
     
    		ListeStations bis = new ListeStations (s,null);
    		if (tete == null){
    			tete = bis;
    		}
    		else
    		{
    			queue.suivant = bis;
    		}
    			queue =bis;
    		}

    Maintenant je dois retirer le début de la liste :

    la aussi je bloque , pourtant ce code me semble bon ... ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    	public Station retirerEnTete() throws Exception {
     
    if (tete==null){
    	throw new Exception("liste vide");
    }
    ListeStations res = tete;
    tete = tete.suivant;
    return res;
    	}

    Mon nouveau main de test est

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    Station a = new Station("Saint-Jacques", "6", null);
    		Station b = new Station("Glacière", "6", null);
     
    		FileDAttenteStations f = new FileDAttenteStations();
     
    		f.ajouterEnQueue(a);
    		f.ajouterEnQueue(b);
     
    		System.out.print("Apres ajout en queue de Saint-Jacques puis Glacière : ");
    		f.afficher();
     
    		Station r1 = f.retirerEnTete();
     
    		System.out.print("Apres un premier retrait en tete : ");
    		f.afficher();
     
    		if (r1 != null)
    			System.out.println("Station retiree : " + r1.nom);
    		else
    			System.out.println("Erreur, aucune station retiree!");

    Encore merci,

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Implémentation d'une liste chaînée
    Par Yux dans le forum C
    Réponses: 22
    Dernier message: 02/03/2006, 20h31
  2. Réponses: 4
    Dernier message: 25/12/2005, 18h46
  3. Réponses: 2
    Dernier message: 10/10/2005, 02h25
  4. [Stratégie]Sauvegarde d'une liste chainée dans un fichier
    Par BernardT dans le forum Général Java
    Réponses: 17
    Dernier message: 25/07/2005, 17h04
  5. manipulation d'une liste chainé
    Par sorari dans le forum C++
    Réponses: 1
    Dernier message: 16/03/2005, 12h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo