// ineg-fusion.c // << Algorithmique du texte >> // Maxime Crochemore, Christophe Hancart et Thierry Lecroq // Vuibert, 2001. #include <stdio.h> #include "chl.h" #include "cellule.h" #include "fifo.h" File inegFusion(Mot x, Mot y, int f, int j, int g, int k, File Fin, File Gin) { File F, G, J; int p, q; F = copie(Fin); G = copie(Gin); J = fileVide(); while (longueur(J) <= k && longueur(F) > 0 && longueur(G) > 0) { p = *(int *)tete(F); q = *(int *)tete(G); if (p < q) { defiler(F); enfiler(J, nouvelEntier(p - j + f)); } else if (q < p) { defiler(G); enfiler(J, nouvelEntier(q - j + f)); } else { defiler(F); defiler(G); if (x[p - j + f] != y[f + p]) enfiler(J, nouvelEntier(p - j + f)); } } while (longueur(J) <= k && longueur(F) > 0) { p = *(int *)defilement(F); enfiler(J, nouvelEntier(p - j + f)); } while (longueur(J) <= k && longueur(G) > 0 && *(int *)tete(G) <= g - f) { q = *(int *)defilement(G); enfiler(J, nouvelEntier(q - j + f)); } return(J); }