Les listes chainées

foxriver001 Messages postés 2 Date d'inscription lundi 31 mars 2008 Statut Membre Dernière intervention 8 avril 2008 - 7 avril 2008 à 16:19
foxriver001 Messages postés 2 Date d'inscription lundi 31 mars 2008 Statut Membre Dernière intervention 8 avril 2008 - 8 avril 2008 à 05:03
au fait j'ai implémenté les listes chainées en java mais le programme ne marche pas correctement,j'ai donc besoin de
l'aide de quelqu'un .voici le programme ci-dessous ,mon but est de saisir les éléments de la listes (entiers) ensuite les afficher

package liste;

import java.util.Scanner;
import javax.swing.*;
import java.io.*;
import java.util.*;
/**
 *
 * @author Madang
 */
public class liste_ch {
    private int valeur;//contenu de la liste
    private liste_ch svt;//reference sur l'element suivant
     public liste_ch(int v,liste_ch s){
          valeur=v;
          svt=s;
     }
     public liste_ch(){}
     public  int tete( liste_ch l){
        return l.valeur;
     }
     public  int queue(liste_ch l){
         liste_ch m=l;
      while(l.svt!=null){
           m.svt=l.svt;
      }
         return m.valeur;
             
     }
     public  int getvaleur(){
      return valeur;
     }
     public liste_ch getsvt(){
      return svt;
     }
     public  liste_ch liste_vide(){
      liste_ch l=new liste_ch();
   return l;
     
     }
     public static boolean rechercher(int a,liste_ch l){
         if(l==null) return false;
        while(l!=null) {
        if(a==l.valeur)  return true;
            l=l.svt ;
        }
       return false;
     }
     public static liste_ch ajouter(int a,liste_ch l){
     if(!rechercher(a,l))
      new liste_ch(a,l);
     return l;
     }
     public static  liste_ch supprimer(int a ,liste_ch l){
         liste_ch lis=l.svt;
         if(l.valeur==a) return lis;
         else while(lis!=null){ if(lis.valeur==a) {l.svt=lis.svt; return l;}
                 lis=lis.svt;
                 l=l.svt;
          }
         return l;
     }
     public static void afficher(liste_ch l){
         int i=1;
       while(l!=null)  {
       System.out.println("\n\t valeur "+i+":"+l.valeur);
       i++;l=l.svt;
       }  
     }

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        boolean hasnext=true;
       String c,n="n",y;
       int i;
       liste_ch l=new liste_ch();
        Scanner input=new Scanner(System.in);
        System.out.println("\nsaisir les élements de votre liste !");
        while( hasnext==true){
        i=input.nextInt();       
        ajouter(i,l);
        System.out.println("\nun autre entier ? (y/n)");
        c=input.next();
        if(c.compareToIgnoreCase(n)==0) hasnext=false;
       }
        afficher(l);
        // TODO code application logic here
    }

}
 ensuite voici  ce qu'il m'affiche quand je l'execute:
run:

saisir les élements de votre liste !
3

un autre entier ? (y/n)

n

         valeur 1:0
BUILD SUCCESSFUL (total time: 35 seconds)

what doesn't kill u makes u stronger

2 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 129
7 avril 2008 à 19:02
Salut,

Déjà, rien qu'ici, y'a un soucis :
public  int queue(liste_ch l){
         liste_ch m= l;
      while(l.svt!=null) {
           m.svt =l.svt;
      }

Vu que l n'est jamais modifié, tu va tourné en boucle !!!

Serait-ce pas plutôt : while(m.svt!=null){
______________________________________
DarK Sidious
0
foxriver001 Messages postés 2 Date d'inscription lundi 31 mars 2008 Statut Membre Dernière intervention 8 avril 2008
8 avril 2008 à 05:03
Merci pour ta remarque

[auteur/DARKSIDIOUS/13557.aspx DARKSIDIOUS],au fait jusqu'à présent je n'ai pas encore utilisé la méthode "queue" si tu vois le resultat affiché ,je pense que le programme n'affiche pas ce je veux.
D'autre part tu as raison "queue" est mal écrite.






what doesn't kill u makes u stronger
0
Rejoignez-nous