Liste bidirectionnelle exo débutant

Résolu
Bonjour,
J'aimerai un avis sur cet exo svp et merci d'avance. Alors voici l'énoncé:
Soit une liste bidirectionnelle d’entiers.
Ecrire un module qui inverse le contenu de la liste bidirectionnelle

et voici la correction qu'une amie propose et je ne suis pas du meme avis qu'elle au niveau de la ligne où j'ai mis le commentaire . Qu'en pensez-vous :
Type LBi = ↑Structure
DEBUT
 Info : entier
 Prec, suiv : LBi
FIN
Var tete, queue : LBi
Procedure Inversion (Donnee tete, queue : LBi )
Var P, D : LBi
Var perm : entier
DEBUT
 Si (tete != NIL) Alors
  P ←tete 
  D←queue 
  Tantque (P != D ET D↑.suiv != P) faire /* Moi je trouve qu'elle aurait dû mettre : Tantque (P != D ET D↑.prec != P) faire
   Perm ← P↑.info
   P↑.info←D↑.info
   D↑.info←perm
   P←P↑.suiv
   D←D↑.prec
  FinTanque
 FinSi
FIN

1 réponse

  1. Contributeur
    bonjour, cette fois-ci, je suis d'accord avec ton amie.
    il faut s’arrêter soit quand D et P sont identiques, soit quand P est le suivant de P.
    tu ne peux pas t’arrêter quand P est le précédent de D, car, quand c'est le cas, il faut faire l'échange encore une fois. après cet échange, P deviendra le suivant de D, et il faudra s’arrêter.
    1. D'accord merci encore et bonne journée
    2. Au fait j'avais proposé cela vu que D ← queue et comme c'est queue le déplacement se fait avec la case prec ?
    3. Contributeur
      @bornin90sP commence en début de liste, et D commence en fin de liste.
      à chaque tour, P se déplace vers la fin, et D se déplace vers le début.
      on doit s’arrêter quand P et D se retrouvent au même endroit, ou si ils viennent de se chevaucher, D se retrouvant juste avant P.