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 :
Je ne comprends pas bien les 3 dernières étapes :
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; }
J'ai testé en mettant une condition
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 elem->suiv = csl; if(tmp) tmp->suiv = elem; else *sl = elem;mais ça ne fonctionne pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part csl->numeroDoc != Val
Pourriez-vous m'aider à comprendre et résoudre ce problème ?
Par avance je vous remercie
Partager