Structures de données et de fichiers
Tous les énoncés  Enoncé précédent   Recueil d’exercices ( Enoncés – Corrigés )  Enoncé suivant

Enoncé 30. Listes linéaires chaînées - Piles - Files d'attente - Récursivité  Corrigé 30

Exercice 1 : Epuration des Listes bilatérales ( version itérative )

Soit L une liste linéaire chaînée bilatérale ordonnée (en ordre croissant) pouvant contenir plusieurs éléments identiques.

a) Ecrire le module SOUS-LISTE(L, TETE, QUEUE) qui détermine la première sous-liste de la liste L ayant pour tête TETE et pour queue QUEUE, si elle existe, qui contient n éléments identiques( n >1 ).

b) Ecrire le module SUPPRIMER (L, TETE, QUEUE) qui supprime une sous-liste de tête TETE et de queue QUEUE dans une liste linéaire chaînée bidirectionnelle L.

c) Utiliser SOUS-LISTE et SUPPRIMER ainsi paramétrés pour écrire l'algorithme qui supprime tous les éléments identiques dans une liste linéaire chaînée bidirectionnelle ordonnée.

 

Exercice 2 : Epuration des Listes bilatérales ( version récursive)

Ecrire le prédicat SUPPR(L) qui supprime l'élément pointé par L (i-ième élément avec i > 1) dans une liste linéaire chaînée bidirectionnelle. Ce prédicat rend la nouvelle liste sans l'élément pointé par L.

Utiliser SUPPR pour développer une procédure récursive SUP(L) qui élimine les doubles dans une liste linéaire chaînée bidirectionnelle ordonnée L.

 

Exercice 3 : Implémentation d'un liste de piles de files d'attente

Donner une implémentation possible d'une liste de piles de files d'attente. Il s'agit, de donner le schéma, puis la description algorithmique de celui-ci.

 

* * * * *