Bonjour,

Je travail sur une liste doublement chaînée circulaire en ADA. La réalisation de cette liste n'est pas un problème.

Après on me demande de compléter cette liste par une fonction de ce type :

---------------------------------------------------------------------------------
-- Soit une liste dont on souhaite éliminer successivement et cycliquement tous
-- les éléments, en supprimant à chaque "tour" le Nième élément (lorsqu'un élément
-- est supprimé, on considère que l'élément suivant porte le no 1 et l'on recommence
-- à compter jusqu'à N pour trouver le prochain élément à supprimer, etc.).
-- Cette fonction renvoie la liste (ordonnée) des éléments supprimés en appliquant
-- le procédé décrit ci-dessus.
-- Exemple: Si Liste = (1,2,3,4,5,6,7,8,9), alors
-- Eliminations(Liste, 5) = (5,1,7,4,3,6,9,2,8)
-- Lève Liste_Est_Vide si la liste est vide.
-- Lève Mémoire_Insuffisante si pas suffisamment de place mémoire disponible pour
-- réaliser l'opération.
function Eliminations (Liste : T_Liste; N : Positive) return T_Liste;
---------------------------------------------------------------------------------

Mais la.... Je ne vois même pas ou on élimine les éléments puisque ceux-ci sont toujours là ???

J'ai essayé de me dire que l'on commence par construire la liste comme ça:

On prend le Nème élément = Notre premier élément et on l'en lève de la liste.

Ensuite on rajoute les éléments et l'éléments N+I

Mais je crois pas que ça aie du sens...

Merci d'avance de votre temps et votre aide ! Je ne demande pas la résolution complète juste une petite lumière!