Bonjour a tous voila je suis un débutant , je m'appelle Matt et j'ai 19 ans. j ai commencé des études en administration des réseaux avec une année de programmation très légere à mon actif donc je pense que vous saurez répondre assez facilement a cette question (ou du moins m'expliquer) vu que ca concerne les listes.


Voila , on m'a demandé d'ecrire une procedure "insereDansListeEtIndexSurNom(^liste , ^l_index , datas) qui

-crée un maillon et y range les données passées en paramètres

-Ajoute ce maillon a l arriere de la liste dont on passe l'adresse en paramètre

-insere un maillon dans l'index dont l'adresse est passée en paramètre , cet index est "trié" pour lire les maillons de la liste dans l'ordre croissant sur les "noms"


Bon , ne m'en sortant pas tres bien on m'a envoyé une solution -qui contient peut etre des fautes- , mais on ne m'a pas tout epxliqué alors je viens faire appel à vous


Voici sa solution

Procédure InsererDansListeEtIndexSurNom(l : ^liste, ind : ^l_index, d : data) EST
Var Tmp : ^maillon ;
Tmpa : ^m-index ;
Tmpm : ^m-index ;
Debut
Tmp <- Alloue (taille (maillon)) ;
Tmpm <- Alloue (taille (m-index)) ;
(L -> dernier -> suivant ) <- Tmp ;
(Tmp -> suivant)  NULL ;
(Tmp -> données.nom) <- d.nom ;
(Tmp -> données.age) <- d.age ;
Si ((l -> premier) == NULL) ALORS
(l -> courant) <- Tmp ;
(l -> premier) <- Tmp ;
(l -> dernier) <- Tmp ;
Fin Si ;
Si ((ind -> premier) == NULL) ALORS
(ind -> courant) <- Tmpm ;
(ind -> premier) <- Tmpm ;
(ind -> dernier) <- Tmpm ;
(Tmpm -> maille) <- Tmp ;
(Tmpm -> suivant) <- NULL ;
Fin Si ;
Sinon Si ((ind -> premier -> maille -> données.nom) > d.nom) ALORS
insérerDébutListe(ind, Tmp) ;

Sinon Si ((ind -> dernier -> maille -> données.nom) < d.nom) ALORS
(ind -> courant)<- (ind -> dernier) ;
insérerAprèsCourant(ind, tmp) ;
Sinon
(ind -> courant) <- (ind -> premier) ;
TANT QUE (((ind -> courant -> suivant) != NULL) ET ((ind -> courant -> maille -> données.nom) < d.nom)) FAIRE
Tempa <- (ind -> courant) ;
(ind -> courant) <- (ind -> courant -> suivant) ;
Fin TANT QUE ;
(ind -> courant) <- Tempa ;
insérerAprèsCourantIndex(ind ; Tmp) ;
Fin Si ;
Fin procédure ;
je ne comprend pas la fin , mais si on savait m'expliquer la ligne qui est en rouge je pense que je m'en sortirai
je sais qu'il s'agit d'un tri mais je ne comprend pas bien

[Note ] "L->dernier" signifie 'le dernier de l'objet pointé par L'
et '^' = pointeur de



Voila , désolé si j'ai fait long


merci d'avance pour votre réponse/explication !