Exercice : Le compte est rond
Voici une fonction permettant de compter le nombre d'éléments de la liste. Complétez-la en tenant compte des déclarations ci-dessous, ainsi que du fait que la liste est circulaire :
1
typedef struct mailListeDoubleEnt{
2
int val ;
3
struct mailListeDoubleEnt *precedent ;
4
struct mailListeDoubleEnt *suivant ;
5
} TmaillonD ;
6
typedef TmaillonD *TlisteD ;
typedef struct mailListeDoubleEnt{ int val ; struct mailListeDoubleEnt *precedent ; struct mailListeDoubleEnt *suivant ; } TmaillonD ; typedef TmaillonD *TlisteD ;
La liste étant circulaire, nous allons parcourir la liste jusqu'au nouvel accès sur le 1er élément de liste, notre nouveau critère arrêt. Toutefois, tester cette égalité, de but en blanc, provoquera l'arrêt puisque la liste commence avec l'élément testé pour l'arrêt. Il faut donc traiter différemment le 1er élément.
Enfin, si la liste est vide, il n'est pas question de travailler avec le 1er élément. C'est pourquoi l'ensemble est inclus dans une condition d'existence.