1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| int TableHachage_BiSequence_ajouter_mots(struct TableHachage_BiSequence *pThis, const MotCompact* pNouveauMotG, const MotCompact* pNouveauMotD)
{
const char* motG = GetMotCompact(pNouveauMotG);
const char* motD = GetMotCompact(pNouveauMotD);
char* seqSim = NULL;
size_t nbLettersEnsemble = strlen(motG) + strlen(motD) + 2; // + 2 car il nous faut un espace et un '\0'
unsigned int cle = 0;
seqSim = malloc(nbLettersEnsemble * sizeof(char));
if ( seqSim == NULL )
{
printf("Problème allocation mémoire dans TableHachage_BiSequence_ajouter_mots\n");
return -1;
}
// Reconstruction de la séquence à partir de deux mots
strcpy(seqSim, motG);
strcat(seqSim, " ");
strcat(seqSim, motD);
cle = hash_chaine(seqSim);
// Grace à la clé nous avons la BiSequence correspondante, donc nous remplissons la structure avec les mots
// Comme nous avons une tablea de hachage qui contient des tableaux dynamique, le premier élément n'est peut être pas le bon
// Nous parcourons le tableau pour savoir
struct BiSequence * pSeq = RechercherMot(pThis->seaux[cle].tab, pThis->seaux[cle].taille, seqSim);
if (pSeq!=NULL)
{
pSeq->MotGauche = pNouveauMotG;
pSeq->MotDroit = pNouveauMotD;
// printf("La sequence n'a pas ete trouve\n");
}
free (seqSim);
return 0;
} |
Partager