Trier une liste chainée [Résolu]

Signaler
Messages postés
10
Date d'inscription
dimanche 26 août 2007
Statut
Membre
Dernière intervention
14 juin 2008
-
Messages postés
10
Date d'inscription
dimanche 26 août 2007
Statut
Membre
Dernière intervention
14 juin 2008
-
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

Messages postés
10
Date d'inscription
dimanche 26 août 2007
Statut
Membre
Dernière intervention
14 juin 2008

Merci de votre aide !!!

J'ai resolu mon probleme tout seul.

Ango973