Bonjours, je désire créer une queue dont les valeurs sont des char*, mais j'ai quelque problème.
Voici le code
Voici les problèmes :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 void Enqueue(Queue **f, char *value) { Queue *element = malloc(sizeof(Queue)); if(!element) exit(1); element->val = malloc(sizeof(value)+1); strcpy(element->val,value); element->next = *f; (*f) = element; } char *Dequeue(Queue **f) { Queue *save_Queue = *f; //Sauvegarde la Queue printf("Dequeue :\n"); char* Value; //Queue *tmp; if(!*f) return NULL; //Retourne NULL si la Queue est vide while((*f)->next) //Va à l'avant dernier de la Queue { printf("Value :%s\n",(*f)->val); (*f) = (*f)->next; } Value = malloc(sizeof((*f)->next->val)); strcpy(Value,(*f)->next->val); printf(Value); free((*f)->next); (*f)->next = NULL; //clo la Queue (*f) = save_Queue; return Value; } void Clear(Queue **f) { Queue *tmp; while(*f) { tmp = (*f)->next; free(*f); *f = tmp; } } void View(Queue *f) { while(f) { printf("Voici : %s\n",f->val); f = f->next; } }
Pour l'insertion, les éléments se mettent bien dans la liste, mais quand je les imprime (vie view), le premier et bon mais les autres, chaque fois sont rogner chaque fois le dernier éléments, donc le problème pour moi vient de l'insertion,mais je ne trouve pas.
Autre souci, quand je veux insérer un élément au début, j'ai un du mal à trouver comment arrêter la boucle.
Olivier