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 :

séparer une liste chainée en deux listes


Sujet :

avec Java

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 45
    Points : 9
    Points
    9
    Par défaut séparer une liste chainée en deux listes
    Bonjour,
    Je voudrais séparer une liste simplement chainée en deux listes, mais j'ai un bug. Voici mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public void Separer(int k, Liste l1, Liste l2){
    		Noeud n = premier;
    		while(n!= null){
    			if (n.valeur<=k) l1.AjoutFin(n.valeur);
    			else l2.AjoutFin(n.valeur);
    			n = n.prochain;
    		}
    	}
    dites moi si vous voyez quelque chose qui cloche et merci

  2. #2
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    Et quel est le bug ?


    a++

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 45
    Points : 9
    Points
    9
    Par défaut
    Citation Envoyé par adiGuba Voir le message
    Salut,


    Et quel est le bug ?


    a++
    J'ai le message d'erreur suivant
    Exception in thread "main" java.lang.StackOverflowError

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 45
    Points : 9
    Points
    9
    Par défaut
    Pour être plus précis, mon problème c'est de faire un quicksort sur une liste simplement chainée, et voila mon code au complet
    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
     
    public void Separer(int k, Liste l1, Liste l2){
    		Noeud n = premier;
    		while(n!= null){
    			if (n.valeur<=k) l1.AjoutFin(n.valeur);
    			else l2.AjoutFin(n.valeur);
    			n = n.prochain;
    		}
    	}
     
    	public void Concatener(Liste l){
    		if (premier == null){
    			premier = l.premier;
    			return;
    		}
    		Noeud n = premier;
    		while (n.prochain != null) n=n.prochain;
    		n.prochain = l.premier;
    	}
     
    	public void QuickSort(){
    		if (premier == null) return;
    		Liste l1 = new Liste();
    		Liste l2 = new Liste();
    		Separer(premier.valeur, l1, l2);
    		System.out.print("test");
    		l1.QuickSort();
    		l2.QuickSort();
    		l1.Concatener(l2);
    		premier = l1.premier;
    	}

  5. #5
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par momo-mtl Voir le message
    J'ai le message d'erreur suivant
    Exception in thread "main" java.lang.StackOverflowError
    Cela veut dire que tu boucles à l'infini.
    Le reste du message d'erreur t'indique l'origine du problème...


    a++

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 45
    Points : 9
    Points
    9
    Par défaut
    Citation Envoyé par adiGuba Voir le message
    Cela veut dire que tu boucles à l'infini.
    Le reste du message d'erreur t'indique l'origine du problème...


    a++
    Justement, je ne vois pas ou je boucle à l'infini
    Le reste du message d'erreur est le suivant
    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
    at java.io.FileOutputStream.write(Unknown Source)
    	at java.io.BufferedOutputStream.flushBuffer(Unknown Source)
    	at java.io.BufferedOutputStream.flush(Unknown Source)
    	at java.io.PrintStream.write(Unknown Source)
    	at sun.nio.cs.StreamEncoder.writeBytes(Unknown Source)
    	at sun.nio.cs.StreamEncoder.implFlushBuffer(Unknown Source)
    	at sun.nio.cs.StreamEncoder.flushBuffer(Unknown Source)
    	at java.io.OutputStreamWriter.flushBuffer(Unknown Source)
    	at java.io.PrintStream.write(Unknown Source)
    	at java.io.PrintStream.print(Unknown Source)
    	at projet.Liste.QuickSort(Liste.java:39)
    	at projet.Liste.QuickSort(Liste.java:40)
    	at projet.Liste.QuickSort(Liste.java:40)
    	at projet.Liste.QuickSort(Liste.java:40)
    	at projet.Liste.QuickSort(Liste.java:40)
    	at projet.Liste.QuickSort(Liste.java:40)
    	at projet.Liste.QuickSort(Liste.java:40)
    	at projet.Liste.QuickSort(Liste.java:40)
    	at projet.Liste.QuickSort(Liste.java:40)
    	at projet.Liste.QuickSort(Liste.java:40)
    	at projet.Liste.QuickSort(Liste.java:40)
    	at projet.Liste.QuickSort(Liste.java:40)
    	at projet.Liste.QuickSort(Liste.java:40)
    	at projet.Liste.QuickSort(Liste.java:40)
    	at projet.Liste.QuickSort(Liste.java:40)
    	at projet.Liste.QuickSort(Liste.java:40)
    	at projet.Liste.QuickSort(Liste.java:40)
    	at projet.Liste.QuickSort(Liste.java:40)
    	at projet.Liste.QuickSort(Liste.java:40)
    	at projet.Liste.QuickSort(Liste.java:40)
    	at projet.Liste.QuickSort(Liste.java:40)
    	at projet.Liste.QuickSort(Liste.java:40)
    	at projet.Liste.QuickSort(Liste.java:40)
    que je ne comprends pas du tout

  7. #7
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Ben c'est ta méthode QuickSort() : il y a une quinzaine de ligne dessus (et probablement plus car le stacktrace doit être coupé).


    A vue de nez je dirais que tu ne testes pas les cas d'arrêt.
    Lorsque tu arrives à une liste d'un élément tu continue de la "couper" en deux et tu refais un QuickSort dessus... à l'infini.



    a++


    PS : au passage en Java les noms de méthode commencent par une lettre minuscule.

Discussions similaires

  1. Fusion de deux listes chainées
    Par schwuleur dans le forum Langage
    Réponses: 5
    Dernier message: 23/05/2011, 16h42
  2. la concaténation de deux listes chainées
    Par hindou90 dans le forum C
    Réponses: 10
    Dernier message: 19/02/2010, 10h20
  3. Séparer une variable texte en deux
    Par Invité dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 11/03/2009, 14h39
  4. Réponses: 4
    Dernier message: 16/02/2009, 21h52
  5. Liste chainée+Gestion dune liste client
    Par boby35 dans le forum C
    Réponses: 8
    Dernier message: 01/12/2007, 13h25

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