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

#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;
}