Bonjour,

j'ai un petit probleme pour une insertion dans une liste chainee je veux faire un tri par ordre alphabetique. quand je veux l'afficher je n'ai pas le bon resultat.

j'ai l'impression que ca bloque quand je veux inserer en debut de liste.

voici la fonction

edit : structure

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
typedef struct     s_list
{
  void             *data;
  struct s_list    *next;
} t_list;
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
 
 
 
int     my_put_in_list_last (t_list **list, char *val)
{
 
  t_list *element;
  t_list *prev;
  t_list *toput;
 
element = malloc(sizeof(*element));
  if (element == 0)
    return (0);
  toput = malloc(sizeof(*toput));
  if (toput == 0)
    return (0);
  toput->data = val;
     if (*list != NULL)
       {
      element = *list;
      prev = NULL;
      while(element != NULL)
        {
          if(strcmp(element->data,val) == -1)
            {
              if(prev != NULL)
                prev->next = toput;
              else
                {
                  *list = toput;
                }
              toput->next = element;
              element = element->next;
            }
          else
            {
              prev = element;
              element = element->next;
            }
        }
       }
 
     if (*list == NULL)
       {
         element->data = val;
         element->next = *list;
         *list = element;
       }
 
     return (0);
}
ca fais plusieurs heures que je bloque sur ca si c'est possible d'avoir un coup de main ca serait cool