You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
166 lines
2.9 KiB
166 lines
2.9 KiB
#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;
|
|
} |