:: Enseignements :: ESIPE :: E3INFO :: 2009-2010 :: Programmation C ::
![[LOGO]](http://igm.univ-mlv.fr/ens/resources/mlv.png) | Allocation dynamique |
Dans ce TD, nous utiliserons de l'allocation dynamique pour
implémenter une liste chaînée d'entiers.
Exercice 1 - Structure de liste
On utilisera le type suivant :
struct liste {
int valeur;
struct liste* suivant;
};
Écrire les fonctions suivantes, en veillant à bien réfléchir à ce qu'elles doivent éventuellement
retourner:
-
allouer(int n): alloue une cellule et l'initialise avec la valeur n
-
liberer_cellule(struct liste* l): libère la mémoire associée à la seule cellule l
-
liberer_liste(struct liste* l): libère toute la mémoire associée à la
liste pointée par l
-
afficher_liste(struct liste* l): affiche la liste l
-
inserer_en_tete(struct liste* *l,int n): insère la valeur n en tête
de la liste donnée
Exercice 2 - Listes et ensembles
On souhaite pouvoir représenter un ensemble d'entiers compris entre 0 et N soit à l'aide
de la structure d'ensemble définie au TD précédent, soit à l'aide d'une liste chaînée triée.
Écrire les fonctions suivantes:
-
unsigned char* liste_vers_ensemble(struct liste* l): construit et retourne l'ensemble
représenté par la liste l. La fonction renverra NULL si une des valeurs de la liste
dépasse la capacité de l'ensemble (ça dépend de la constante MAX du TD précédent), ou si
l'allocation du tableau d'octets échoue.
-
struct liste* ensemble_vers_liste(unsigned char* e): construit et retourne la
liste triée contenant toutes les valeurs de l'ensemble e
© Université de Marne-la-Vallée