Rechercher : dans
Par :

Tri d'une liste chainee en C

Dernière réponse le 14 fév 2009 à 11:35:46 limbergh, le 13 fév 2009 à 18:18:22 
 Signaler ce message aux modérateurs

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!!!
Configuration: Linux
Firefox 3.0.5

Meilleures réponses pour « tri d'une liste chainee en C » dans :
Liste simplement chaînée VoirLISTES SIMPLEMENT CHAINÉES Requis I. INTRODUCTION II. Définition III. La construction du prototype d'un élément de la liste IV. Opérations sur les listes chaînées A. Initialisation B. Insertion d'un élément dans la liste 1. Insertion...
Les templates en C++ VoirIntroduction Avantages Inconvénients Quand utiliser des templates ? Que dois-je mettre dans les .hpp et dans les .cpp ? Convention de notations Quelques templates célèbres STL BGL Premiers pas Spécifications de templates Template par...
Liste doublement chaînée VoirLISTES DOUBLEMENT CHAINÉES Requis I. INTRODUCTION II. Définition III. La construction du prototype d'un élément de la liste IV. Opérations sur les listes doublement chaînées A. Initialisation B. Insertion d'un élément dans la liste 1....
Langage C - Les listes chaînées VoirLa notion de structure autoréferrentielle Une structure autoréferrentielle (parfois appelée structure récursive) correspond à une structure dont au moins un des champs contient un pointeur vers une structure de même type. De cette façon on crée...
Les chaînes de caractères en C++ VoirQu'est-ce qu'une chaîne de caractères ? Une chaîne de caractères (appelée string en anglais) est une suite de caractères, c'est-à-dire un ensemble de symboles faisant partie du jeu de caractères, défini par le code ASCII. En langage C++, une...

1

mamiemando, le 14 fév 2009 à 01:36:52

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

Répondre à mamiemando

2

 lami20j, le 14 fév 2009 à 11:35:46

Salut,

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

Répondre à lami20j