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;
}
}
Dans le constructeur ListeR(), tu n'initialises ni tete ni reste. Ils valent donc null par défaut.
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.