Académique Documents
Professionnel Documents
Culture Documents
Écrivez les fonctions suivantes (elles ont souvent une version récursive simple)
– LISTE insererTete(ELEMENT e, LISTE l); qui insére un nouveau maillon d’élément
e en tête de la liste l.
– void afficher(LISTE l); qui affiche les éléments de l.
– LISTE insererQueue(ELEMENT e, LISTE l); qui insére un nouveau maillon d’élément
e en queue de la liste l.
– int appartient(ELEMENT e, LISTE l); retourne 1 si e est présent dans la liste l et
0 sinon ;
– LISTE supprimer(ELEMENT e, LISTE l); supprime toutes les occurrences de e dans
la liste l ;
– void vider(LISTE l); libère l’espace mémoire occupé par la liste l ;
1
– LISTE triInsertion(LISTE l);. Vous pourrez d’abord écrire une fonction LISTE
insererTriee(ELEMENT e, LISTE l) qui insère un élément dans une liste triée l en
conservant l’ordre.
Vous pourrez tester vos fonctions avec le programme principal suivant :
int main(){
LISTE l=NULL;
int i;
for (i=0;i<11;i++){
l=insererTete(i,l);
}
afficher(l);
for (i=0;i<11;i++){
l=insererQueue(i,l);
}
afficher(l);
printf("%d\n",rechercher(1,l));
printf("%d\n",rechercher(11,l));
l=supprimer(1,l);
afficher(l);
vider(l);
return 0;
}
Exercice 2
Une liste doublement chaı̂née permet d’accéder directement au maillon précédent du
maillon courant d’une liste via un champ prec. Le champ suiv du dernier maillon pointe
circulairement sur le premier maillon et le champ prec du premier maillon vide pointe vers le
dernier maillon. Pour éviter le cas particulier des listes vides, on supposera en plus que toute
liste contient un premier maillon fictif dont la valeur ne sera jamais lue.
– À partir de la structure des listes chaı̂nées simple, définissez la structure des listes
doublement chaı̂nées avec maillon fictif.
– Écrivez une fonction textttvoid initListe(LISTE l) qui crée une liste ne comprenant que
le premier maillon fictif.
– Reprenez les fonctions précédentes et adaptez-les aux listes doublement chaı̂née.