Liste bidirectionnelle exo débutant

Résolu/Fermé
bornin90s Messages postés 44 Date d'inscription mardi 6 juin 2017 Statut Membre Dernière intervention 6 juillet 2018 - Modifié le 1 mai 2018 à 14:33
yg_be Messages postés 22730 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024 - 1 mai 2018 à 18:59
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 22730 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024 1 477
1 mai 2018 à 15:58
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 mardi 6 juin 2017 Statut Membre Dernière intervention 6 juillet 2018
1 mai 2018 à 16:56
D'accord merci encore et bonne journée
0
bornin90s Messages postés 44 Date d'inscription mardi 6 juin 2017 Statut Membre Dernière intervention 6 juillet 2018
1 mai 2018 à 17:01
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 22730 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024 1 477 > bornin90s Messages postés 44 Date d'inscription mardi 6 juin 2017 Statut Membre Dernière intervention 6 juillet 2018
1 mai 2018 à 18:59
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