#include "SAE.h" // ListeAdmission ListeAdmission listenouvAdm(void) { ListeAdmission la; la = NULL; return la; } ListeAdmission insererEnTeteAdm(ListeAdmission la, int num) { MaillonAdmission *p; p = (MaillonAdmission *)malloc(sizeof(MaillonAdmission)); if (p == NULL) { printf("Opérations interdites !!!!\n"); exit(1); } p->v = candidat; p->suiv = la; return p; } ListeAdmission insererAdm(ListeAdmission la, Admission candidat) { if (la == NULL) return insererEnTeteAdm(la, candidat); if (candidat.num < la->v.num) return insererEnTeteAdm(la, candidat); if (candidat.num > la->v.num) return la; la->suiv = insererAdm(la->suiv, candidat); return la; } ListeAdmission supprimerEnTeteAdm(ListeAdmission la) { MaillonAdmission *aux; if (videAdm(la)) { printf("Opérations interdites !!!!\n"); exit(1); } aux = la; la = la->suiv; free(aux); return la; } ListeAdmission supprimerAdm(ListeAdmission la, Admission candidat) { if (videAdm(la)) return la; if (candidat.num < la->v.num) return la; if (candidat.num == la->v.num) return supprimerEnTeteAdm(la); la->suiv = supprimerAdm(la->suiv, la->v); return la; } bool rechercherAdm(ListeAdmission la, Admission candidat) { if (videAdm(la)) return false; if (candidat.num < la->v.num) return false; if (candidat.num == la->v.num) return true; return rechercherAdm(la->suiv, la->v); } Admission TeteAdm(ListeAdmission la) { if (videAdm(la)) { printf("Opérations interdites !!!!\n"); exit(1); } return la->v; /* Retourne un candidat */ } bool videAdm(ListeAdmission la) { return la == NULL; } void afficherAdm(ListeAdmission la) { while (!videAdm(la)) { afficherCandidatsAdm(TeteAdm(la)); la = la->suiv; } printf("\n"); } int longueurAdm(ListeAdmission la) { int cpt = 0; while (!videAdm(la)) { cpt++; la = la->suiv; } return cpt; } void afficherCandidatsAdm(Admission candidat) { printf("%d\t%s\t%s\t%d\t%d\t%d\t%d\t%d\t%s\t%s\t%d\t%d", candidat.num, candidat.nom, candidat.prenom, candidat.tabMatiere[0], candidat.tabMatiere[1], candidat.tabMatiere[2], candidat.tabMatiere[3], candidat.nbChoix, candidat.ville); afficherDpt(candidat.ldept); } // ListeDepartement ListeDepartement listenouvDpt(void) { ListeDepartement ld; ld = NULL; return ld; } ListeDepartement insererEnTeteDpt(ListeDepartement ld, Departement dpt) { MaillonDepartement *p; p = (MaillonDepartement *)malloc(sizeof(MaillonDepartement)); if (p == NULL) { printf("Opérations interdites !!!!\n"); exit(1); } p->v = dpt; p->suiv = ld; return p; } ListeDepartement insererDpt(ListeDepartement ld, char dpt) { if (ld == NULL) return insererEnTeteDpt(ld, dpt); if (strcmp(dpt, ld->v.departement) < 0) return insererEnTeteDpt(ld, dpt); if (strcmp(dpt, ld->v.departement) = 0) return ld; ld->suiv = insererDpt(ld->suiv, dpt); return ld; } ListeDepartement supprimerEnTeteDpt(ListeDepartement ld) { MaillonDepartement *aux; if (videDpt(ld)) { printf("Opérations interdites !!!!\n"); exit(1); } aux = ld; ld = ld->suiv; free(aux); return ld; } ListeDepartement supprimerDpt(ListeDepartement ld, char dpt) { if (videDpt(ld)) return ld; if (strcmp(dpt, ld->v.departement) < 0) return ld; if (strcmp(dpt, ld->v.departement) = 0) return supprimerEnTeteDpt(ld); ld->suiv = supprimerDpt(ld->suiv, dpt); return ld; } bool rechercherDpt(ListeDepartement ld, char dpt) { if (videDpt(ld)) return false; if (strcmp(dpt, ld->v.departement) < 0) return false; if (strcmp(dpt, ld->v.departement) = 0) return true; return rechercherDpt(ld->suiv, dpt); } Departement TeteDpt(ListeDepartement ld) { if (videDpt(ld)) { printf("Opérations interdites !!!!\n"); exit(1); } return ld->v; /* Retourne un département */ } bool videDpt(ListeDepartement ld) { return ld == NULL; } void afficherDpt(ListeDepartement ld) { while (!videDpt(ld)) { afficherDepartement(TeteDpt(ld)); ld = ld->suiv; } printf("\n"); } void afficherDepartement(Departement dpt) { printf("%s\t%d\t%d\t", dpt.departement, dpt.decisionAdmission, dpt.decisionCandidat); } int longueurDpt(ListeDepartement ld) { int cpt = 0; while (!videDpt(ld)) { cpt++; ld = ld->suiv; } return cpt; }