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
| main.c
liste_reservation *R=malloc(200 * sizeof(liste_reservation));
int saisie;
float arrivee;
(...)
do {
scanf("%d", &saisie);
(...)
scanf("%f",&arrivee);
R=reserver(R,currenttime,arrivee);
afficher(R);
}
while (saisie!=4);
free(R) ;
return 0;
}
liste.c
liste_reservation * reserver(liste_reservation * l, float currenttime, float arrivee){
(...)
l=inserer(arrivee,l);
return l;
}
liste_reservation * inserer(float arrivee, liste_reservation *l){
liste_reservation * new=malloc(sizeof(liste_reservation));
new->aterrissage=arrivee;
if (l->size==0) {
new->suivant=NULL;
new->size=1;
l=new;
}
else if (arrivee>=l->aterrissage) {
new->suivant=l;
new->size=l->size+1;
l=new;
}
else {
liste_reservation *tmp1=l;
liste_reservation *tmp2=l->suivant;
while ((tmp2!=NULL)&&(arrivee>tmp2->aterrissage)) {
tmp1->size++;
tmp1=tmp2;
tmp2=tmp2->suivant;
//on "remonte" la liste
}
tmp1->suivant=new; //insertion du nouvel élément à partir des 2 tmp
new->suivant=tmp2;
}
return l;
}
void afficher(liste_reservation *l) { //parcourt la liste pour afficher les heures réservées
liste_reservation *temp=l;
while (temp != NULL){
printf ("%.2f ", temp->aterrissage);
temp = temp->suivant;
}
} |
Partager