#include "SAE.h" ListeDept listenouv(void) { ListeDept l; l = NULL; return l; } ListeDept insererEnTete(ListeDept l, char departement[], int nbP, char resp[]) { MaillonDept *m; m = (MaillonDept *)malloc(sizeof(MaillonDept)); if (m == NULL) { printf("Fonction insererEnTete : problème malloc"); exit(1); } strcpy(m->departement, departement); m->nbP = nbP; strcpy(m->resp, resp); m->suiv = l; return m; } ListeDept inserer(ListeDept l, char departement[], int nbP, char resp[]) { if (l == NULL) { return insererEnTete(l, departement, nbP, resp); } if (strcmp(departement, l->departement) < 0) { return insererEnTete(l, departement, nbP, resp); } if (departement == l->departement) { return l; } l->suiv = inserer(l->suiv, departement, nbP, resp); return l; } void afficher(ListeDept l) { if (vide(l)) { printf("\n"); return; } printf("%s\t%d\t%s\n", l->departement, l->nbP, l->resp); afficher(l->suiv); } void afficherDept(ListeDept l) { if (vide(l)) { printf("\n"); return; } printf("\t\t%s\n", l->departement); afficherDept(l->suiv); } bool vide(ListeDept l) { return l == NULL; } int rechercheDept(ListeDept l, char departement[], bool *trouve) { if (vide(l)) { *trouve = false; return 0; } if (strcmp(departement, l->departement) != 0) { *trouve = false; return 1 + rechercheDept(l->suiv, departement, trouve); } if (strcmp(departement, l->departement) == 0) { *trouve = true; return 0; } return rechercheDept(l->suiv, departement, trouve); } int getNbP(ListeDept l, int pos) { for (int i = 0; i < pos; i++) { l = l->suiv; } return l->nbP; } void setNbP(ListeDept l, int pos, int valeur) { for (int i = 0; i < pos; i++) { l = l->suiv; } l->nbP = valeur; } ListeDept supprimerEnTete(ListeDept l) { MaillonDept *aux; if (l == NULL) { printf("Opération interdite."); exit(1); } aux = l; l = l->suiv; free(aux); return l; } ListeDept supprimer(ListeDept l, char departement[]) { if (l == NULL) { return l; } if (strcmp(departement, l->departement) < 0) { return l; } if (strcmp(departement, l->departement) == 0) { return supprimerEnTete(l); } l->suiv = supprimer(l->suiv, departement); return l; } char* getResp(ListeDept l, int pos) { for (int i = 0; i < pos; i++) { l = l->suiv; } return l->resp; } void setResp(ListeDept l, int pos, char valeur[]) { for (int i = 0; i < pos; i++) { l = l->suiv; } strcpy(l->resp, valeur); } char* getDept(ListeDept l, int pos) { for (int i = 0; i < pos; i++) { l = l->suiv; } return l->departement; } int longueur(ListeDept l) { if (vide(l)) { return 0; } return 1 + longueur(l->suiv); }