Académique Documents
Professionnel Documents
Culture Documents
Atelier 2 Listes Circulaires
Atelier 2 Listes Circulaires
Programme C)
Fonction CompterFilles :
int CompterFilles(struct ronde *L) {
int Nb = 0;
struct ronde *Deb = L;
if (L->E.sexe == 'F') {
Nb++;
}
return Nb;
}
Procédure AjouterEnfant :
void AjouterEnfant(struct ronde **L, Enfant Enf) {
struct ronde *p, *Der, *Debut;
p = (struct ronde*)malloc(sizeof(struct ronde));
p->E = Enf;
if (*L == NULL) {
p->suivant = *L;
*L = p;
} else {
Der = *L;
while (Der != L) {
Der = Der->suivant;
}
Der->suivant = p;
p->suivant = *L;
*L = p;
}
}
Procédure SortirEnfant :
void SortirEnfant(int k, struct ronde **L) {
int i;
struct ronde *P, *Q, *Debut;
while (i < k) {
i++;
Q = P;
P = P->suivant;
}
Q->suivant = P->suivant;
free(P);
*L = Q->suivant;
}
}
Fonction RetournerGagnant :
struct ronde* RetournerGagnant(int k, struct ronde *L) {
while (L != NULL && L->suivant != L) {
SortirEnfant(k, &L);
}
return L;
}
Algorithme Jeu :
#include <stdio.h>
#include <stdlib.h>
typedef struct {
char non[50];
char sexe;
} Enfant;
struct ronde {
Enfant E;
struct ronde *suivant;
};
int main() {
int n;
Enfant Enf;
struct ronde *R = NULL;
return 0;
}