Tri d'une liste chainee en C [Fermé]

Messages postés
658
Date d'inscription
dimanche 8 juillet 2007
Statut
Membre
Dernière intervention
29 juin 2010
- - Dernière réponse : lami20j
Messages postés
21511
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
- 14 févr. 2009 à 11:35
Bonjour,

on voit les listes chainées au cours et je dois faire un tri de celle-ci. J'ai jamais eu d'exemple pour ça et j'ai donc fait une fonction qui reçoit le pointeur de base et le revoit après le tri.

Par contre le tri ne fonctionne pas, j'ai du faire des boulettes mais je ne vois pas ou vu que je n'ai jamais vu cette matière. Voici ma fonction

Liste *tri (Liste *pb)
{
    Liste *pt, *pt2, *xtp;
    pt = (Liste *)malloc(sizeof (Liste *));
    pt2 = (Liste *)malloc(sizeof (Liste *));
    xtp = (Liste *)malloc(sizeof (Liste *));
    pt = pb;
    xtp = pb;
    int sw, i, j;        
    do
    {
        sw=0;
        for (i = 0; i < compte(pb); i++)
            pt = pt->suivant;
            for (j = 1; j < compte(pb)-1; j++)
                pt2 = pt2->suivant;
                 {
                      if (pt->donnee > pt2->donnee)
                      {
                          xtp->donnee =pt->donnee;
                          pt->donnee = pt2->donnee;
                          pt2->donnee = xtp->donnee;
                          sw=1;
                       }
                     }
    }while(sw==1); 
    return pb;
}


Mon but est de faire parcourir deux boucles avec deux pointeurs différents et de comparer les données entre ces deux boucles, mais je ne sais pas si c'est la meilleure solution...

Merci d'avance et soyez indulgent, j'ai jamais vu ça!!!
Afficher la suite 

2 réponses

Meilleure réponse
Messages postés
29067
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
19 novembre 2019
6699
2
Merci
Tu peux t'inspirer des méthodes de tri sur wikipedia.
http://fr.wikipedia.org/wiki/Tri_rapide

Si tes données étaient stockées dans un tableau, tu pourrais aussi utiliser la fonction qsort.
http://en.wikipedia.org/wiki/Qsort_(C_Standard_Library)

Bonne chance

Dire « Merci » 2

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 6039 internautes nous ont dit merci ce mois-ci

Messages postés
21511
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3400
0
Merci
Salut,

Voici un exemple de tri par insertion
http://www.commentcamarche.net/forum/affich 10142953 tri par insertion?#1