Bonjour,
J'ai un probleme avec une fonction qui doit me trier une liste chainée selon le nom mais apres le passage dans ma fonction la liste reste identique j'avoue ne rien comprendre
donc j'aimerai avoir de l'ai svp.
Voici la fonction en question :
typedef struct cellule t_cellule;
typedef t_cellule* liste;
typedef struct fiche t_fiche;
struct fiche{
char nom[TAILLENOM];
char prenom[TAILLEPREN];
char adresse[TAILLEADR];
int tel;
};
struct cellule{
t_fiche element;
struct cellule *suivant;
};
void Tri_insertion_lst(liste *prem)
{
/*position testée, précédent,dernier plus petit*/
liste pt,prec,dpp;
for(prec = *prem,pt = (*prem)->suivant; pt != NULL; prec = pt,pt = pt->suivant)
if(strcmp(prec->element.nom,pt->element.nom) > 0) /*inutile de chercher si en bonne position */
{
prec->suivant = pt->suivant;
if(strcmp((*prem)->element.nom,pt->element.nom) > 0) /*cas particulier du premier*/
{
pt->suivant = *prem;
*prem = pt;
}
else
{
dpp = *prem;
while(strcmp(dpp->suivant->element.nom,pt->element.nom) <= 0)dpp = dpp->suivant;
/* on est sur d'en trouver un, vu les tests effectués plus haut */
pt->suivant = dpp->suivant;
dpp->suivant = pt;
}
}
}
Je precise que j'ai codé cette fonction à partir d'un algo que j'ai trouvé sur le net.
Ango973