Trier une liste chainée

Résolu
ango973 Messages postés 10 Date d'inscription dimanche 26 août 2007 Statut Membre Dernière intervention 14 juin 2008 - 13 juin 2008 à 11:37
ango973 Messages postés 10 Date d'inscription dimanche 26 août 2007 Statut Membre Dernière intervention 14 juin 2008 - 14 juin 2008 à 16:29
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

1 réponse

ango973 Messages postés 10 Date d'inscription dimanche 26 août 2007 Statut Membre Dernière intervention 14 juin 2008
14 juin 2008 à 16:29
Merci de votre aide !!!

J'ai resolu mon probleme tout seul.

Ango973
3
Rejoignez-nous