Serie4listespilesetfiles
8SIF109 – session hiver 2006.
Série 4 : Listes, piles et files
(consultez la correction de certains de ces exercices sur ma page web.)
A. Résoudre les exercices suivants du chapitre 5 de Shaffer (pages 133, 135, 136 et 137):
exo. 1; exo. 3; exo. 5; exo. 7; exo. 12; exo. 14; exo. 15; exo. 18; exo. 20;
Exo1. Soit la liste L ayant la configuration <2,33,15,5,9>. Écrire une série d’instructions utilisant les opérations de la classe LISTE pour supprimer l’élément 15. (voir Shaffer , page 90).
Exo.3 : Créer une liste pouvant contenir 20 éléments à l’aide des opérations de la classe LISTE.
Exo.5 : Ajouter à la classe LISTE la fonction qui renverse l’ordre des liste de la liste. L’algorithme doit s’exécuter en O(n).
Exo.7 : À la section 4.1.3. (page : 105) du livre de Shaffer, il est énoncé : « L’espace requis dans l’implantation d’une liste à l’aide d’un tableau est en (n), mais peut être plus grand. » Expliquer pourquoi.
Exo. 12. Modifier le code de la Figure 424 (page121) pour implanter deux piles ayant en commun le même tableau, comme illustré par la Figure 4.27 (page 124).
Exo. 14 : Un palindrome est une chaîne de caractères qui se lit de la même manière de gauche à droite e de droite à gauche. En utilisant un nombre fixe de pile et de files, les opérations de la classe PILE et FILE, et un nombre fixe de variables de type INT et CHAR, écrire un algorithme qui détermine si une chaîne de caractère est un palindrome. On suppose que la chaîne de caractère est lue à partir du clavier caractère par caractère. L’algorithme doit donner en sortie TRUE ou FALSE selon le cas.
Exo. 15. Réimplanter la fonction fibr ci-dessous en utilisant une pile pour remplacer les appels récursifs. long fibr(int n) { assert((n>0) &&