|
|
|
@ -11,9 +11,9 @@
|
|
|
|
|
// boucle principale (je la trouve pas jolie, est ce qu'on la met dans fusionMaillonDevis meme si ce sera plus somple a expliquer ?)
|
|
|
|
|
void fusionDevisElements(ListeDevis *R, int *tlogR, ListeDevis *S, int *tlogS, ListeDevis *mergedList, ListeDevis *last, int *k)
|
|
|
|
|
{
|
|
|
|
|
ListeDevis *current;
|
|
|
|
|
while (*tlogR > 0 && *tlogS > 0)
|
|
|
|
|
{
|
|
|
|
|
ListeDevis *current;
|
|
|
|
|
if (strcmp((*R)->dev.nomE, (*S)->dev.nomE) < 0)
|
|
|
|
|
{
|
|
|
|
|
current = R;
|
|
|
|
@ -83,11 +83,13 @@ void gestionElementsHorsTailleLogique(ListeDevis *mergedList, ListeDevis *last,
|
|
|
|
|
// fusion de maillons
|
|
|
|
|
void fusionMaillonDevis(ListeDevis R, int tlogR, ListeDevis S, int tlogS, ListeDevis *T)
|
|
|
|
|
{
|
|
|
|
|
int k;
|
|
|
|
|
ListeDevis last;
|
|
|
|
|
ListeDevis mergedList
|
|
|
|
|
int k;
|
|
|
|
|
|
|
|
|
|
last = NULL;
|
|
|
|
|
mergedList = NULL;
|
|
|
|
|
k = 0;
|
|
|
|
|
ListeDevis last = NULL;
|
|
|
|
|
ListeDevis mergedList = NULL;
|
|
|
|
|
|
|
|
|
|
fusionDevisElements (&R, &tlogR, &S, &tlogS, &mergedList, &last, &k);
|
|
|
|
|
gestionElementsRestants (&mergedList, &last, &R, &tlogR, &k);
|
|
|
|
@ -103,6 +105,7 @@ void triFusionListeDevis(ListeDevis *ldevis, int tlog)
|
|
|
|
|
{
|
|
|
|
|
ListeDevis p;
|
|
|
|
|
ListeDevis q;
|
|
|
|
|
ListeDevis qTemp;
|
|
|
|
|
|
|
|
|
|
p = *ldevis;
|
|
|
|
|
q = p->suiv;
|
|
|
|
@ -113,7 +116,7 @@ void triFusionListeDevis(ListeDevis *ldevis, int tlog)
|
|
|
|
|
p = p->suiv;
|
|
|
|
|
q = q->suiv->suiv;
|
|
|
|
|
}
|
|
|
|
|
ListeDevis qTemp = p->suiv;
|
|
|
|
|
qTemp = p->suiv;
|
|
|
|
|
p->suiv = NULL;
|
|
|
|
|
|
|
|
|
|
triFusionListeDevis(ldevis, tlog / 2);
|
|
|
|
@ -128,7 +131,8 @@ void triFusionListeDevis(ListeDevis *ldevis, int tlog)
|
|
|
|
|
//est ce qu'on supprime tout les elements de la liste chainee ou juste les elements de la longueure logique ?
|
|
|
|
|
void freeListeDevis(ListeDevis *ldevis, int *tlog)
|
|
|
|
|
{
|
|
|
|
|
ListeDevis pos = *ldevis;
|
|
|
|
|
ListeDevis pos;
|
|
|
|
|
pos = *ldevis;
|
|
|
|
|
while (pos)
|
|
|
|
|
{
|
|
|
|
|
ListeDevis suiv = pos->suiv;
|
|
|
|
|