S'enregistrerS'enregistrer RechercherRechercher FAQFAQ ConnexionConnexion
Listes chainées en JAVA

 
Poster un nouveau sujet   Répondre au sujet    Teamatic.net Index du Forum -> Travaux de groupes
Message Auteur
MessagePosté le: 05 04 2004 10:54    Sujet du message: Listes chainées en JAVA

Bonjour à tous,

Voila, j'ai un TP sur les listes chainées, mais j'ai un blocage, je parviens pas à les manipuler comme je le voudrais...

On doit ajouter des noms avec prénoms dans une listes, on doit les mettre en tete, en queue, les retirer, afficher tel case avec comme param, soit le nom ET prenom, soit la Nieme personne, ainsi entre autre d'un compareTo qui doit permettre de trier toutes les cases selon le nom de famille, puis le prénom.....

Je vous mets deja le code que j'ai....je cherche surtout un site qui m'aiderait, sinon si vous savez m'aider.....c'est encore mieux !

Code:
public class ListeChainee {
   
   
   public Personne pers;
   public ListeChainee suivant;
   
   
   public ListeChainee() {
      this.pers=null;
      this.suivant=null;   
   }


   public ListeChainee(Personne pers, ListeChainee suivant) {
      setPers(pers);
      setSuivant(suivant);
   }
   
         
   public void setPers(Personne pers) {
      this.pers=pers;
   }
   
   
   public void setSuivant(ListeChainee suivant){
      this.suivant=suivant;
   }
   
   
   public Personne getPers() {
      return this.pers;
   }
   
   
   public ListeChainee getSuivant() {
   return this.suivant;
   }
   
   
   public void ajouterTete(Personne pers) {
   this.setSuivant(new ListeChainee(pers, this.getSuivant()));
   }
   
   
   public void oterTete()throws ListeException{
   if(this.estVide())throw new ListeException("La liste est vide!");
   this.setSuivant(this.getSuivant().getSuivant());
   }
      
      
   public void ajoutQueue(Personne pers){
      
   if(this.estVide()){
   this.setSuivant(new ListeChainee(pers,this.getSuivant()));
   }
   ListeChainee baladeur=this;
   ListeChainee nouvelle=new ListeChainee();
      
            
   while(baladeur.getSuivant()!=null){
   nouvelle.ajouterTete(baladeur.getPers());
   baladeur=baladeur.getSuivant();
   }
      
   ListeChainee liste1 = new ListeChainee(pers,this.getSuivant());
   baladeur.setSuivant(liste1);
      

   }
   
   
   public void oterQueue() throws ListeException{
   int compteur=0;
   if(this.estVide()) throw new ListeException ("Liste vide!");
      
   ListeChainee baladeur = this.getSuivant();
      
   if(baladeur!=null){
   compteur++;
   baladeur=this.getSuivant();
   }
   System.out.println("nombre d'éléments :"+compteur);
   }
   
   
   public void supprimerParNomPrenom()throws ListeException{
   ListeChainee baladeur=this.getSuivant();
      
   while(baladeur!=null){
     if(this.getPers()==baladeur.getPers()){
     baladeur.setSuivant(this.getSuivant());
     }
     else{
     throw new ListeException ("Personne indisponible ds la liste");
     }
             }
          }
   
   
   public boolean estVide(){
   return this.getSuivant()==null;
   }
   
   
   public String toString() {
   if(this.estVide()) return "";
   ListeChainee baladeur=this.getSuivant();
      
   String resultat="( ";
      
   while(baladeur!=null) {
   resultat+=baladeur.getPers();
   baladeur=baladeur.getSuivant();
      }
      
   return resultat+" )";
      
   }
   
   
   public String premierePersonne(){
   
                if(this.estVide()) return "";
      
   return "("+this.getSuivant().getPers()+")";
      
   }


   public String deuxiemePersonne(){
   if(this.estVide()|| this.getSuivant().estVide()) return "";
      
   return "("+this.getSuivant().getSuivant().getPers()+")";
         
   }
   
   
   public String niemePersonne(int nieme) {
   int compteur=1;
      
   if(this.estVide()) return "";
            
   ListeChainee baladeur=this.getSuivant();
      
   while(baladeur==null&&compteur!=nieme){
      
   baladeur=baladeur.getSuivant();
   }
      
   if(compteur==nieme) return "("+baladeur.getPers()+")";
   return "N-ieme trop grand";
   }
   
      
}      


La methode oterQueue() et String niemePersonne() foirent.....
Doit surement y avoir des fautes....mais tout compile, et fait ce que je veux.....sauf les deux methodes citées ci dessus....

Merci de votre aide,

Greg
Francky
Modérateur
Modérateur


Inscrit le: 02 Mar 2003
Messages: 4336
Localisation: Waterloo. Waterloo. Waterloo... Morne Plaine....

Revenir en haut
MessagePosté le: 09 05 2004 19:02    Sujet du message:

Voila j'a codé un truc vite fait si tu veux plus d'indication hésite pas...


Personne.java
Code:


public class Personne {

   private String nom;
   private String prenom;

   public Personne(String p, String n){
      nom = n;
      prenom = p;
   }

   public String getNom(){
      return this.nom;
   }
   
   public String getPrenom(){
      return this.prenom;
   }
}


Chainon.java
Code:


public class Chainon{

   private Chainon suivant;
   private Personne pers;

   
   public Chainon(Personne p){
      pers = p;
      suivant = null;
   }
   
   public Personne getPersonne(){
      return pers;
   }
   
   public Chainon getSuivant(){
      return suivant;
   }
   
   public void setSuivant(Chainon c){
      this.suivant = c;
   }
}


ListeChainee.java
Code:


public class ListeChainee{

   private Chainon premier;// Cet élément permet d'accéder a la liste
               // mais aucune information n'est sotckée dasn celui-ci

   //Constructeur   
   public ListeChainee(){
      premier = new Chainon(null);
      premier.setSuivant(null);
   }

   public void ajouterEnQueue(Chainon c){
      Chainon parcours;
      parcours=premier;
      while(parcours.getSuivant() != null){
         parcours = parcours.getSuivant();
      }
      parcours.setSuivant(c);
   }

   public void ajouterEnTete(Chainon c){
      c.setSuivant(premier.getSuivant());
      premier.setSuivant(c);
   }
   
   public int size(){
      int i=0;
      Chainon p = premier;
      while(p.getSuivant() != null){
         i++;
         p=p.getSuivant();
      }
      return i;
   }
   
   public Chainon getChainonAt(int i){
      if(i>this.size()){
         System.out.println("Erreur indice en dehors de limites\n");
         return null;
      }
      else{
         int j = 0;
         Chainon p = premier;
         while(j<i){
            j++;
            p=p.getSuivant();
         }
         return p;
      }
   }
   
   
   public void supprimerAt(int i){
      int j = 0;
      Chainon p = premier;
      Chainon p2 = null;
      while(j<i){
         j++;
         p2 = p;
         p = p.getSuivant();
      }
      //Supression
      p2.setSuivant(p.getSuivant());
   }

   public void supprimerQueue(){
      supprimerAt(this.size());
   }
   
   public String toString(){
      Chainon p=premier;
      int i = 0;
      String stmp = "";
      while(p.getSuivant() != null){
         i++;
         p = p.getSuivant();
         stmp +=""+i+".\nNom : ";
         stmp += p.getPersonne().getNom();
         stmp += "\nPrenom : ";
         stmp += p.getPersonne().getPrenom();
         stmp += "\n";
      }
      return stmp;
   }
}


Application.java
Code:

public class Application{

   public static void main(String argv[]){
      ListeChainee lc = new ListeChainee();
      lc.ajouterEnTete(new Chainon(new Personne("Albert", "Einstein")));
      lc.ajouterEnTete(new Chainon(new Personne("Alexandre", "Volta")));
      lc.ajouterEnTete(new Chainon(new Personne("Thomas", "Young")));
      lc.ajouterEnQueue(new Chainon(new Personne("Isaac", "Newton")));
      lc.ajouterEnQueue(new Chainon(new Personne("Erwin", "Schrodinger")));
      lc.ajouterEnQueue(new Chainon(new Personne("Niels", "Bohr")));
      System.out.println(lc.toString());
      lc.supprimerAt(3);
      System.out.println(lc.toString());
   }
}


Voila ce n'est pas la code le plus él"gant que j'ai jamais écrit mais ça marche Very Happy
Pour ton tri faut que je regarde mais d'apprès mes souvenir il faut que ta classe Personne implémente Comparable (faut ensuite surcharger 3 méthode et ça roule tou seul )

Voila en espérant que ça t'aide...
Igor Abalam
Posteur habitué
Posteur habitué


Inscrit le: 08 Mai 2004
Messages: 122

Revenir en haut
MessagePosté le: 18 05 2004 12:14    Sujet du message:

Merci beaucoup !!! Meme si entre temps j'ai arrete mes etudes, car ca me branchait pas trop.... merci quand meme !!!!

Francky
Francky
Modérateur
Modérateur


Inscrit le: 02 Mar 2003
Messages: 4336
Localisation: Waterloo. Waterloo. Waterloo... Morne Plaine....

Revenir en haut
MessagePosté le: 04 01 2007 14:02    Sujet du message: Liste chainées

Bonjour,

j'ai du mal a comprendre le fonctionnement des listes chainées, en fait, pour mon projet, il me faut créer une liste de voitures, pour pouvoir récupérer les attributs de voiture suivante et voiture précédante et je ne sais pas comment m'y prendre, pouvez vous maider svp
atomic007
Nouveau posteur
Nouveau posteur


Inscrit le: 04 Jan 2007
Messages: 1

Revenir en haut
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet Toutes les heures sont au format GMT
Page 1 sur 1

 
 
 
Powered by phpBB © 2001, 2005 phpBB Group - Traduction : phpBB-fr.com
Gzip: Disabled  -  Queries: 15  -  Generation Time: 1.04419 s