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 70 71 72 73
   | liste tri(liste l,int b)
{
    int i,j,longueur;//i designe un caractere des nombres, 
    liste A[b]; //Ce tableau represente les "seaux"
    element *e; //Pour parcourir la liste l
    element *f; //Pour parcourir la liste dont le 1er element est designe par A[j]
 
    longueur=calcullongueur(longueur,l);
 
    for (i=longueur-1;i>0;i=i-1)
    {
        for (j=0;j<b;j=j+1)
        {
            A[j]=NULL;  //on mets a NULL le tableau de seaux
        }
 
        e=l;
        while (e !=NULL)
        {
            element *nouv;  
            nouv=(element*)malloc(sizeof(element)); //on cree un nouvelle elemnt a ajouter dans la liste designz par A[j] 
            memcpy(nouv->valeur,e->valeur,11*sizeof(char)); //on prends la valeur de e pour la copier dans A[j]
            nouv->suivant=NULL;
 
            if (e->valeur[i]=='a')
            j=10;
            else if (e->valeur[i]=='b')
            j=11;
            else if (e->valeur[i]=='c')
            j=12;
            else if (e->valeur[i]=='d')
            j=13;
            else if (e->valeur[i]=='e')
            j=14;
            else if (e->valeur[i]=='f')
            j=15;
            else
            j=e->valeur[i];
 
            if (A[j] != NULL)
            {
                f=A[j];
                while (f->suivant != NULL)
                    f=f->suivant;
                f->suivant=nouv;
            }
            else  
            {
                memcpy(A[j]->valeur,e->valeur,11*sizeof(char));
                A[j]->suivant=NULL;
            }
            e=e->suivant;
        }
        // a partir d'ici on ecrase les valeurs de la liste l 
        e=l;
        j=0;
        while (e!=NULL)
        {
            while (A[j]=NULL)
                  j=j+1;
            f=A[j];
            memcpy(e->valeur,f->valeur,11*sizeof(char)); 
            while (f->suivant !=NULL)
            {
               f=f->suivant;
               e=e->suivant;
               memcpy(e->valeur,f->valeur,11*sizeof(char));
            } 
            j=j+1;           
        }
    }    
    return l;
} | 
Partager