Les listes chainées [Demande explication]

el karkouri -  
majon Messages postés 6 Statut Membre -
Bonjour,

Liste insert(Liste premier, Liste nouveau)
{ Liste p=premier;
if(!p) return nouveau;
else
{ if(p->val<nouveau->val)
{ p->suiv=insert(p->suiv,nouveau);
return p;
}
else
{ nouveau->suiv=p;
return nouveau;
}
}
}

voici ma fonction insertion qui marche parfaitement le probleme c'est que je ne comprend pas comment on arrive a y recuperer la liste entiere a la fin car je vois pas ou et le lien entre le debut de la liste et la case inserer
merci d'avance

1 réponse

majon Messages postés 6 Statut Membre 1
 
Le procédé que tu décris montre que ta fonction donne toujours la tête de la liste chainée.
tu imagines une liste
deux cas :{},{1,3,5,...}
Le premier cas est simple (pas compliqué pour insérer)
Deuxième cas : si la liste est non vide
Tu t'interesse uniquement à la tête de liste (ligne 5: tu fais une comparaison)
Deux cas : ---on n'insert pas en tête, donc le probleme revient à inserer dans la liste {3,5,...}
de plus je sais que ma fonction renvoie la tête de cette nouvelle liste et donc j'ai juste à écrire que le suivant est cette nouvelle tête (ligne 6) et surtout je renvoie ensuite la tête de la liste (ligne 7)
---on insère en tete (facile)
0