algorithmique (école d'ingénieur) · Chapitre 7 · Application directe du cours
Fonctions de base sur les listes
Graphes sans circuit et ordonnancement de projets · niveau 1 (application)
Énoncé
Avec la classe Liste du cours et ses trois primitives vide, premier, reste, écrire :
int somme(Liste l), en récursif puis en itératif ;boolean dans(int x, Liste l), en récursif puis en itératif ;Liste copie(Liste l);Liste inverse(Liste l), en temps pour une liste de éléments.
Tester sur la liste .
Corrigé
Chaque fonction récursive suit la définition d'une liste : une liste vide (base), ou un premier élément suivi d'un reste (hérédité).
static int somme(Liste l) {
if (vide(l)) return 0; // somme(()) = 0
return premier(l) + somme(reste(l));
}
static int sommeIt(Liste l) {
int s = 0;
for (Liste c = l; !vide(c); c = reste(c)) s = s + premier(c); // s = somme des éléments vus
return s;
}
static boolean dans(int x, Liste l) {
if (vide(l)) return false; // () ne contient rien
return x == premier(l) || dans(x, reste(l));
}
static boolean dansIt(int x, Liste l) {
for (Liste c = l; !vide(c); c = reste(c)) if (premier(c) == x) return true;
return false;
}
static Liste copie(Liste l) {
if (vide(l)) return null;
return new Liste(premier(l), copie(reste(l)));
}
static Liste inverse(Liste l) {
Liste r = null; // r = miroir de la partie déjà parcourue
for (Liste c = l; !vide(c); c = reste(c)) r = new Liste(premier(c), r);
return r;
}
Pour inverse, l'astuce est l'accumulateur : ajouter un élément en tête coûte un temps constant, donc la boucle est en . La version naïve « inverser le reste puis ajouter le premier en fin de liste » parcourt à chaque étape la liste déjà construite : elle est en .
l = (0 2 1 2)
somme = 5 / 5
dans(1) = true, dans(5) = false
inverse = (2 1 2 0), copie = (0 2 1 2)100 % gratuit
La suite du chapitre est sur Adloun
- 11 autres exercices corrigés dans ce chapitre
- Les 2 QCM du chapitre, le premier sans compte
- Le podcast et la vidéo du chapitre : 2 minutes d'écoute sans compte
- Le tuteur, qui guide pas à pas sans donner la réponse
Sans compte : le cours, le premier QCM et 2 minutes de podcast et de vidéo. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.