Liste bidirectionnelle exo débutant

Résolu
bornin90s Messages postés 44 Date d'inscription   Statut Membre Dernière intervention   -  
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   -
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

yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
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.
0
bornin90s Messages postés 44 Date d'inscription   Statut Membre Dernière intervention  
 
D'accord merci encore et bonne journée
0
bornin90s Messages postés 44 Date d'inscription   Statut Membre Dernière intervention  
 
Au fait j'avais proposé cela vu que D ← queue et comme c'est queue le déplacement se fait avec la case prec ?
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > bornin90s Messages postés 44 Date d'inscription   Statut Membre Dernière intervention  
 
P 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.
0