Bonjour,

Je souhaite créer une liste chaînée triée, qui lors de l'insertion d'un nouvel élément vérifie si il est déjà présent et ne l'insère pas dans ce cas.

Ayant du mal à comprendre les listes chaînée j'ai trouvé un tutoriel sur le site me permettant d'insérer des éléments dans une liste chaînée en les triant.
Mais j'obtiens des doublons.
Voici mon code pour l'insertion :
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
void insert(LISTE_DOC **sl, int Val)
{
        LISTE_DOC *tmp = NULL;
        LISTE_DOC *csl = *sl;
        LISTE_DOC *elem = malloc(sizeof(LISTE_DOC));
        if(!elem) exit(1);
        elem->numeroDoc = Val;
        while(csl && csl->numeroDoc < Val)
        {
             tmp = csl;
             csl = csl->suiv;
        }
        elem->suiv = csl;
        if(tmp) tmp->suiv = elem;
        else *sl = elem;
}
Je ne comprends pas bien les 3 dernières étapes :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
elem->suiv = csl;
if(tmp) tmp->suiv = elem;
else *sl = elem;
J'ai testé en mettant une condition mais ça ne fonctionne pas.

Pourriez-vous m'aider à comprendre et résoudre ce problème ?

Par avance je vous remercie