Bonjours, je désire créer une queue dont les valeurs sont des char*, mais j'ai quelque problème.

Voici le code
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
 
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;
          }
}
Voici les problèmes :

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