bonjour,

j'essaye de gerer une file doublement chainée, j'ai utilisé le code de la chaine dans la FAQ de développez:
http://nicolasj.developpez.com/articles/file/

elle utilise les pointeurs de pointeurs et elle marche tres bien, jusque la tout va bien ...
ensuite je voulu créer une fonction pour ajouter des elements automatiquement à la liste en fonction des resultats d'une base de données et c'est la que ca se complique...
dans mon main() ,j'ai donc
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
queue_s *p_queue = NULL;
 
queue_createFromDB(&p_queue); 
 
queue_print (&p_queue);// affichage de ma file
j'utilise un pointeur de pointeur pour manier la file
voici la fonction que j'ai créer:

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
 
 
//creer la liste a partir de la BDD
void  queue_createFromDB(queue_s ** pp_queue)
{
queue_s * tmp=NULL;   //creation d'un pointeur de liste temporaire
 
//...connexion BDD + requete+creation d'une struct "rule"...
//pour chaque "rule" créée, faire:
{
       queue_post (&tmp, &p_rule);//ajouter un element a la file , ici un pointeur de pointeur d'une structure 'rule' que g créé plus haut
}
 
queue_print (&tmp);// affichage de ma file
 
*pp_queue =tmp; // je donne l'adresse à mon veritable pointeur de file
}

le probleme c'est quand j'affiche la liste dans la fonction elle apparait bien, mais quand je l'affiche dans mon main() j'ai pas du tout le meme resultat et g des chiffres bizarres qui s'affichent.
je pense avoir un probleme de pointeurs qq part ,j'ai encore des lacunes sur ce sujet, j'en suis bien conscient et j'ai passer plusieurs heures à essayer de comprendre mes erreurs , j'ai essayé plusieurs alternatives mais rien y fait. pourriez vous m'eclairer svp ?

j'espere que j'ai bien expliqué le prob...

merci