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 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
| Thash_t * ajoute(Thash_t *pListe,char* id,char* kmer,unsigned int pos)
{
Thash_t * newelem= malloc(sizeof(Thash_t));
if(pListe==NULL) //si la liste est vide
{
newelem->kmer=malloc(sizeof(newelem));
strcpy(newelem->kmer,kmer);
newelem->id=malloc(sizeof(newelem));
strcpy(newelem->id,id);
newelem->positions=ajoutefinlistpos(newelem->positions,pos);
newelem->next = NULL;
return newelem;
}
else //si la liste n'est pas vide
{ int verif=0;
while(pListe!=NULL) //ici je vérifie s'il y a un nœud qui correspond à id et au kmer donc il ajoute au noeud secondaire
{
if((strcmp(pListe->id,id)==0) && (strcmp(pListe->kmer,kmer)==0))
{
pListe->positions=ajoutefinlistpos(listepos,pos); //ajout dans la liste secondaire
verif=1;
return pListe;
}
pListe=pListe->next;
}
if (verif==0) //s'il n'y a pas de id et de kmer donc on ajoute un nouveau noeud dans la liste principale
{
newelem->kmer=malloc(sizeof(newelem));
strcpy(newelem->kmer,kmer);
newelem->id=malloc(sizeof(newelem));
strcpy(newelem->id,id);
newelem->positions=ajoutefinlistpos(newelem->positions,pos);
newelem->next = NULL;
if(pListe == NULL)
{
return newelem;
}
else
{
Thash_t * temp=pListe;
while(temp->next != NULL)
{
temp= temp->next;
}
temp->next=newelem;
return pListe;
}
}
}
}
Thash_t ** CreerTable(unsigned int nbEntrees) //creation table de liste chainée
{
unsigned int i=0;
Thash_t **TThash = (Thash_t**)malloc(nbEntrees * sizeof(Thash_t*));
for(i=0;i<nbEntrees;i++)
{
TThash[i]=NULL;
}
return TThash;
}
int main() //le main
{
Thash_t** TThash=CreerTable(lenght);
TThash[Value]=ajoute(TThash[Value],sequence1,Kmer,i); //voici l'ajout
} |
Partager