Listes circulaires

Transcription

Listes circulaires
Programmation Impérative
R. Rioboo
Année 2012-2013
Listes circulaires
Une liste circulaire est une liste dont le dernier élément pointe sur le début de la liste. On représentera
les listes circulaires comme des listes à l’aides des définitions suivantes :
typedef int T;
typedef struct maillon *Liste;
struct maillon {
T donnee;
Liste suivant;
};
On travaille sur les listes circulaires comme sur des listes normales mais le test d’arret se fait au premier
cycle rencontré. Si on rencontre le pointeur NULL la liste n’est pas circulaire.
Exercice 1
1. Écrire la fonction cons qui prend une liste circulaire l, un élément e de type T et ajoute e au début de
l. On pourra modifier la liste passée en argument.
2. Écrire la fonction add qui prend une liste circulaire l, un élément e de type T et ajoute e à la fin l.
3. Écrire une fonction affiche qui affiche la liste circulaire qui lui est passée en argument.
Exercice 2
– Écrire une fonction recopie qui retourne une copie de la liste circulaire qui lui est passée en argument.
– Écrire une fonction qui libère l’espace mémoire utilisé par une liste circulaire l
– Écrire une fonction qui teste si les éléments d’une liste circulaires sont triés dans un ordre non
décroissant.
Exercice 3
Reprendre les différentes fonctionalités des listes et les réécrire pour les listes circulaires.