IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Trie liste chaine


Sujet :

C

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    7
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2003
    Messages : 7
    Points : 6
    Points
    6
    Par défaut Trie liste chaine
    bonjour a tous,
    j'ai une liste chaine que j'aimerai trié par ordre croissant par exemple :

    liste initiale : 1->5->7->2->6
    liste résultante : 1->2->5->6->7

    voici comment est créée ma liste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    typedef struct noeud
    {
    	char lettre;
    	int valeur;
    	struct noeud* gauche;
    	struct noeud* droite;
    }NOEUD;
     
    typedef struct cellule
    {
    	struct noeud* noeud;
    	struct cellule* suivant ;
    }							
    CELLULE ;
    en fait le test s'effectuera je pense comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(tete->noeud->valeur > tete->suivant->noeud ->valeur)
    mais je n'en suis pas sur, mais le probleme c'est que je n'arrive pas à réaliser la fonction entière.

    Merci de bien vouloir m'aider

  2. #2
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Salut

    La liste va être progressivement triee;
    Un pointeur ptr va pointer sur le debut de liste non triée.
    un pointeur tmp va parcourir la liste pour trouver le plus petit élément, on échange avec le pointeur de début de liste, et on continue la recherche à partir de l'élément suivant le début de liste
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    CELLULE *ptr = tete; // decrit la liste chainée
    CELLULE *tmp ;
    CELLULE *pluspetit;
    NOEUD *noeudtmp;
    while (ptr!= NULL)
    {
      pluspetit = ptr;
       tmp = ptr->suivant;
      // on va chercher le plus petit élement de la liste
      while (tmp != NULL)
      {
         if (tmp->noeud->valeur < pluspetit->noeud->valeur)
           pluspetit = tmp;
         tmp = tmp->suivant;
       }
       if (pluspetit->noeud->valeur < ptr->noeud->valeur)
       {
         // on memorise les valeurs du noeud
         noeudtmp=  ptr->noeud;
         // on modifie les liens 
          ptr->noeud = pluspetit->noeud;
          pluspetit->noeud = noeudtmp;
      } 
      // on a mis la plus petite valeur dans ptr, on passe au suivant
      ptr = ptr->suivant;
    }
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    7
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2003
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    je te remercie enormement tu ma sauve d'une gde prise de tete

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [diogene]le trie d'une liste chainée help
    Par mrism000 dans le forum C
    Réponses: 0
    Dernier message: 20/05/2012, 19h58
  2. trie d'une liste chainée
    Par abdelghani666 dans le forum Débuter
    Réponses: 3
    Dernier message: 18/02/2012, 19h31
  3. Liste chainée triée sans insertion de doublon
    Par Bogs dans le forum Débuter
    Réponses: 1
    Dernier message: 22/03/2009, 18h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo