// bon-suffixe.c
// << Algorithmique du texte >>
// Maxime Crochemore, Christophe Hancart et Thierry Lecroq
// Vuibert, 2001.
#include <stdio.h>
#include "chl.h"
int *bonSuffixe(Mot x, Longueur m, int suff[]) {
int i, j, *bonSuff;
bonSuff = (int *)malloc(m*sizeof(int));
if (bonSuff == NULL) error("bonSuffixe");
j = 0;
for (i = m - 2; i >= -1; --i)
if (i == -1 || suff[i] == i + 1)
while (j < m - 1 - i) {
bonSuff[j] = m - 1 - i;
++j;
}
for (i = 0; i <= m - 2; ++i)
bonSuff[m - 1 - suff[i]] = m - 1 - i;
return(bonSuff);
}