int main() { CARTE c; Liste l1,l2,l3,l4,l5; char rep; int n; l1=creer_liste(); l2=creer_liste(); l3=creer_liste(); l4=creer_liste(); l5=creer_liste(); do { printf("quitter(0); Ajouter en tete(1); Ajouter en queu(2); Supprimer en tete(3); Visualiser(4); Supprimer(5)"); fflush(stdout); rep=getchar(); switch(rep) { case '1': printf("Valeur(1..13) et couleur (0..3) \n"); scanf("%d %hhd",&(c.rang),&(c.couleur)); if (c.rang>=1 && c.rang<=13 && c.couleur>=0 && c.couleur<=3) l1=ajout_tete(c,l1); break; case '2': printf("Valeur(1..13) et couleur (0..3) \n"); scanf("%d %hhd",&(c.rang),&(c.couleur)); if (c.rang>=1 && c.rang<=13 && c.couleur>=0 && c.couleur<=3) l1=ajout_queue(c,l1); break; case '3': supprimen(0,l1); break; case '4': visualiser_liste(l1); break; case '5': printf("Quelle est la position a supprimer ? \n"); scanf("%d",&n); if (n>=0) l1=supprimen(n,l1); break; default : continue; break; } getchar(); } while (rep !='0'); return 0; }
liste Tri(liste *l){// on donne un pointeur pour pouvoir supprimer de la mémoire la liste *l double dureemax; liste p = *l; liste r = NULL; int i = 1; int imax = 1; dureemax = p->duree; char notedureemax = p->note; while( *l ){ // tant que tout n'est pas trié ( *l non vide ) on continue while(p){ // Boucle pour chercher le maximum et sa position dans *l (isupp) if( p->duree > dureemax){ // on en trouve un et on garde en mémoire ses caractéristiques dureemax=p->duree; notedureemax=p->note; imax=i; i=i+1; // on incrémente pour regarder au rang suivant p=p->suiv; } else{ i=i+1; // on en trouve pas on incrémente quand même p=p->suiv; } } // sortie de boucle , on a trouvé le maximum r=ajouttete3(r, dureemax, notedureemax); // on ajoute le maximum trouvé dans r *l=supprimen(imax,*l); // on le supprime de *l p=*l; // on réinitialise p et les variables, on recommence le tri if(p){ dureemax=p->duree; notedureemax=p->note; imax=1;} i=1; } return r; // on retourne la liste triée }