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

Collection et Stream Java Discussion :

Liste chaînée


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Septembre 2005
    Messages
    747
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 747
    Par défaut Liste chaînée
    Bonjour,

    j'aurais besoin d'aide car j'ai des erreurs que je ne n'arrive pas à corriger.
    Voici mes erreurs:
    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
    ~$ javac Main.java
    Main.java:4: cannot find symbol
    symbol  : class Link
    location: class Main
            Link head = null;
            ^
    ./LinkedList.java:29: cannot find symbol
    symbol  : variable element
    location: class LinkedList
                return element + " " + next.toString();
                       ^
    ./LinkedList.java:29: cannot find symbol
    symbol  : variable next
    location: class LinkedList
                return element + " " + next.toString();
                                       ^
    3 errors
    Voici mon code :
    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
    import java.util.*;
     
        public class LinkedList{
    	private Link head = null;
     
    	class Link{
    	    private Link next;
    	    private String element;
     
    	    public Link(String element, Link next){
    		this.element = element;
    		this.next = next;
    	    }
    	}
     
    	public void add(String text){
    	    head = new Link(text,head);
    	}
     
    	public int size(){
    	    int size = 0;
    	    while(head!= null){
    		size ++;
    		head = head.next;
    	    }
    	}
     
    	public String toString(){
    	    return element + " " + next.toString();
    	}
        }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public class Main{
        public static void main(String [] args){
    	LinkedList list = new LinkedList();
    	Link head = null;
    	list.add("un",head);
    	list.add("deux",head);
    	list.add("trois",head);
    	list.add("quatre",head);
     
    	System.out.println(list);
        }
    }
    Merci d'avance

  2. #2
    Membre Expert
    Avatar de afrikha
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 600
    Par défaut
    Link, bien que ce soit une classe, c'est une classe interne et un attribut de ta classe LinkedList, tu y accéde donc avec


    Mes publications
    Lisez
    Les régles du forum
    Pensez au bouton

  3. #3
    Membre éclairé
    Inscrit en
    Septembre 2005
    Messages
    747
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 747
    Par défaut
    Bonjour,

    alors j'ai réecrit mon code mais il reste un problème car lorsque je demande l'affichage de la liste et de sa taille ,j'ai ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    elements de la liste : quatre trois deux un
    taille : 0
    alors que lorsque je mets seulement affichage de la liste,j'ai
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    elements de la liste : quatre trois deux un
    et seulement l'affichage de la taille:
    Le code corrigé :
    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
    import java.util.*;
     
        public class LinkedList{
    	private Link head = null;
     
    	class Link{
    	    private Link next;
    	    private String element;
     
    	    public Link(String element, Link next){
    		this.element = element;
    		this.next = next;
    	    }
    	}
     
    	public void add(String text){
    	    head = new Link(text,head);
    	}
     
    	public int size(){
    	    int size = 0;
    	    while(head!= null){
    		size ++;
    		head = head.next;
    	    }
    	    return size;
    	}
     
    	public String toString(){
    	    StringBuilder sb = new StringBuilder();
    	    sb.append("elements de la liste : ");
    	    while(head != null){
    		sb.append(head.element).append(" ");
    		head = head.next;
    	    }
    	    return sb.toString();
    	}
        }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    public class Main{
        public static void main(String [] args){
    	LinkedList list = new LinkedList();
     
    	list.add("un");
    	list.add("deux");
    	list.add("trois");
    	list.add("quatre");
     
    	//System.out.println(list);
    	System.out.println("taille : " + list.size());
        }	
     
    }

  4. #4
    Membre Expert
    Avatar de afrikha
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 600
    Par défaut
    Pourquoi as-tu mis le problème en résolu alors qu'il ne l'est pas ?

    Je te conseille de faire des classes séparées pour Link et LinkedList, c'est mieux pour la conseption.

    Et puis elle est où la méthode qu affiche ta liste et sa taille ?


    Mes publications
    Lisez
    Les régles du forum
    Pensez au bouton

  5. #5
    Membre éclairé
    Inscrit en
    Septembre 2005
    Messages
    747
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 747
    Par défaut
    Citation Envoyé par afrikha
    Pourquoi as-tu mis le problème en résolu alors qu'il ne l'est pas ?
    C'est vrai,j'avais pas remarqué

    Je te conseille de faire des classes séparées pour Link et LinkedList, c'est mieux pour la conseption.
    Je l'ai fait

    Et puis elle est où la méthode qu affiche ta liste et sa taille ?
    Les methodes size() et toString() dans la class LinkedList

  6. #6
    Membre Expert
    Avatar de afrikha
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 600
    Par défaut
    head represente une variable d'instance, modifie ta méthode comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public int size(){
           int size = 0;
           Link lien=head;
           while(lien!= null){
          size ++;
           lien= lien.next;
           }
           return size;
       }
    Mais ne te contente pas de faire un copier/coller, essaye de comprendre pourquoi ta méthode initiale ne marchait pas.
    Si tu as d'autres questions aux quelles tu ne trouves pas de réponse après mùre réflection , poste les sur le forum.


    Mes publications
    Lisez
    Les régles du forum
    Pensez au bouton

  7. #7
    Membre éclairé
    Inscrit en
    Septembre 2005
    Messages
    747
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 747
    Par défaut
    Citation Envoyé par afrikha
    head represente une variable d'instance, modifie ta méthode comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public int size(){
           int size = 0;
           Link lien=head;
           while(lien!= null){
          size ++;
           lien= lien.next;
           }
           return size;
       }
    Mais ne te contente pas de faire un copier/coller, essaye de comprendre pourquoi ta méthode initiale ne marchait pas.
    Si tu as d'autres questions aux quelles tu ne trouves pas de réponse après mùre réflection , poste les sur le forum.
    Je pense avoir compris
    Est ce que le problème,venait du fait que comme je fais avancer mon head directement et que c'est un attribut de ma classe,à la sortie de ma boucle head vaut null et donc la taille vaut 0?
    Il faut donc utilisier un Link temporaire pour garder la liste initiale

  8. #8
    Membre éclairé
    Inscrit en
    Septembre 2005
    Messages
    747
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 747
    Par défaut
    Salut afrikha ,

    en suivant tes conseils,j'ai enfin ce que je veux :cool:
    j'obtiens ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ~$ java Main
    elements de la liste : quatre trois deux un
    taille : 4
    Je mets le code corrigé et qui fonctionne,ça peut toujours servir:

    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
    import java.util.*;
     
    public class Link{
        private Link next;
        private final String element;
     
        public Link(String element, Link next){
    	this.element = element;
    	this.next = next;
        }
     
        public Link getNext(){
    	return next;
        }
     
        public String getElement(){
    	return element;
        }
    }
    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
    import java.util.*;
     
        public class LinkedLink{
    	private Link head = null;
    	int size = 0;
     
    	public void add(String text){
    	    head = new Link(text,head);
    	    size ++;
    	}
     
    	public int size(){
    	    return size;
    	}
     
    	public String toString(){
    	    Link tmp = head; 
    	    StringBuilder sb = new StringBuilder();
    	    sb.append("elements de la liste : ");
    	    while(tmp != null){
    		sb.append(tmp.getElement()).append(" ");
    		tmp = tmp.getNext();
    	    }
    	    return sb.toString();
    	}
        }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public class Main{
        public static void main(String [] args){
    	LinkedLink list = new LinkedLink();
     
    	list.add("un");
    	list.add("deux");
    	list.add("trois");
    	list.add("quatre");
     
    	System.out.println(list);
    	System.out.println("taille : " + list.size());
        }	
    }

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

Discussions similaires

  1. tri de liste chainée
    Par RezzA dans le forum C
    Réponses: 7
    Dernier message: 26/01/2003, 20h25
  2. Réponses: 2
    Dernier message: 04/10/2002, 09h13
  3. liste d'objets
    Par Pierrot dans le forum Langage
    Réponses: 2
    Dernier message: 27/09/2002, 09h56
  4. Compter le nombre ligne listée (COUNT) ?
    Par StouffR dans le forum Langage SQL
    Réponses: 7
    Dernier message: 02/09/2002, 09h41
  5. Listes déroulantes liées entre elles
    Par denisC dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 27/07/2002, 15h53

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