Gère les textes d'entrée n'ayant qu'un seul type de caractère
This commit is contained in:
parent
e915bd3080
commit
5af178a01d
|
@ -101,6 +101,24 @@ HufTree createTree(bytecount* counts) {
|
||||||
// Cas particulier : aucun caractère dans le fichier, dans ce
|
// Cas particulier : aucun caractère dans le fichier, dans ce
|
||||||
// cas l'arbre est l'arbre vide
|
// cas l'arbre est l'arbre vide
|
||||||
tree = NULL;
|
tree = NULL;
|
||||||
|
} else if (leaves_count == 1) {
|
||||||
|
// Cas particulier : un seul type de caractère dans le fichier,
|
||||||
|
// dans ce cas on crée un noeud artificiel et une racine. Sans
|
||||||
|
// cette opération, on aurait un arbre avec un unique sommet et
|
||||||
|
// donc une étiquette vide
|
||||||
|
HufTree child_l = remaining[0];
|
||||||
|
HufTree child_r = malloc(sizeof(*child_r));
|
||||||
|
tree = malloc(sizeof(*tree));
|
||||||
|
|
||||||
|
tree->value = -1;
|
||||||
|
tree->count = -1;
|
||||||
|
tree->child_l = child_l;
|
||||||
|
tree->child_r = child_r;
|
||||||
|
|
||||||
|
child_r->value = -1;
|
||||||
|
child_r->count = -1;
|
||||||
|
child_r->child_l = NULL;
|
||||||
|
child_r->child_r = NULL;
|
||||||
} else {
|
} else {
|
||||||
// Sinon, la racine de l'arbre est le dernier sommet encore
|
// Sinon, la racine de l'arbre est le dernier sommet encore
|
||||||
// dans le tableau `remaining`
|
// dans le tableau `remaining`
|
||||||
|
@ -245,9 +263,11 @@ void _labelVertex(HufVertex vertex, char** labels, char* label, size_t length) {
|
||||||
} else {
|
} else {
|
||||||
// Si le sommet est une feuille, étiquetage du caractère
|
// Si le sommet est une feuille, étiquetage du caractère
|
||||||
// associé avec l'étiquette passée en paramètre. Fin de la récursion
|
// associé avec l'étiquette passée en paramètre. Fin de la récursion
|
||||||
|
if (vertex.value != -1) {
|
||||||
labels[vertex.value] = label;
|
labels[vertex.value] = label;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
char* _appendToString(char* orig, size_t length, char append) {
|
char* _appendToString(char* orig, size_t length, char append) {
|
||||||
char* result = malloc((length + 2) * sizeof(*result));
|
char* result = malloc((length + 2) * sizeof(*result));
|
||||||
|
|
Loading…
Reference in New Issue