probleme insertion liste chainee
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:
1 2 3 4 5
| typedef struct s_list
{
void *data;
struct s_list *next;
} t_list; |
Code:
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