Partage
  • Partager sur Facebook
  • Partager sur Twitter

objet null, ArbreHuffman

Sujet résolu
    16 novembre 2017 à 19:45:03

    Bonjour a tous.

    Depuis quelques jours je suis bloquer sur une erreur d’exécution sur une implémentation d'un arbre de huffman.

    	 // On crée la liste contenant les arbres
    	        ListeR l = new ListeR();
    	        l.setVide(0);
    	        //System.out.println(tabChar.length);
    
    	        for (i=0; i<tabChar.length; i++){
    	        	l = l.insererOrd(new ArbreHuff(new Couple(charFreqs[i], tabChar[i])));
    	        	
    	 	       System.out.println(l.toString());
    
    	        }
    	 	       System.out.println(l.toString());
    	 	       


    Voici une partie de mon main, lors de l’exécution de se code cela m'affiche que mon objet l est vide, cependant mes tableau charfreqs et tabChar sont bien remplis. Je ne comprend pas pourquoi..

    Voici ci dessous les spécification des autres classes ainsi que l’implémentation de la méthode insererOrd.

    public class ListeR{
    	
    	ArbreHuff tete;
    	ListeR reste;
    	int vide;
    	
    	public ListeR(ArbreHuff tete, ListeR reste) {
    		this.tete = tete;
    		this.reste = reste;
    		this.vide = 0;
    	}
    	public ListeR(ArbreHuff tete) {
    		this.tete = tete;
    		this.vide = 0;
    	}
    	
    	public ListeR() {
    		this.vide = Integer.MAX_VALUE;
    	}
    	
    	//inserer dans l'ordre
    	public ListeR insererOrd(ArbreHuff val){
    		if(this.isVide() != 0){
    			return this.prefix(val);
    		}	
    		else if (val.couple.getFrequence()>=this.tete.couple.getFrequence()){
    			System.out.println("d");
    			return prefix(val);
    
    		}
    		else{
    			return this.reste.insererOrd(val).prefix(this.tete);
    		}
    	}
    
    	public ListeR prefix(ArbreHuff i){
    
    		return new ListeR(i,this);
    		
    	}
    
    	public int isVide() {
    		if(reste == null){
    			this.vide = Integer.MAX_VALUE;
    		}
    		return this.vide;
    	}
    }
    public class ArbreHuff  {
    
    	public int vide;
    	public Couple couple;
    	public ArbreHuff fg, fd;
    	
    	public ArbreHuff (ArbreHuff fd, ArbreHuff fg, Couple couple) {
    		this.fd = fd;
    		this.fg = fg;
    		this.couple = couple;
    		vide = 0;
    	}
    	
    	public ArbreHuff(Couple couple){
    		
    		this.couple = couple;
    		vide = 0;
    	}
    	
    	public ArbreHuff(){
    		this.couple.frequence = Integer.MAX_VALUE;
    	}
    }
    public class Couple {
    
    	 int frequence;
    	 char car;
    
    	public Couple(int frequence, char car){
    		this.frequence = frequence;
    		this.car = car;
    	}
    }
    

    Merci de votre aide.

    • Partager sur Facebook
    • Partager sur Twitter
      16 novembre 2017 à 20:21:05

      Bonjour,

      Dans le constructeur ListeR(), tu n'initialises ni tete ni reste. Ils valent donc null par défaut.

      • Partager sur Facebook
      • Partager sur Twitter

      objet null, ArbreHuffman

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown