[FIFO] fonction retirer le premier element
Bonjour,
voilà j'ai implémenter une FIFO suivant le modèle suivant :
Code:
1 2 3 4 5 6 7
| typedef struct noeud_file s_noeud_file;
struct noeud_file
{
s_noeud_arbre *p_noeud_arbre;
s_noeud_file *p_suivant;
}; |
dans cette file je sauvegarde les adresses des noeuds d'un arbre binaire de recherche (pour pouvoir faire ensuite un parcours en largeur)
Ma file ce présente comme suit:
j'ajoute à partir de la gauche, et je retire à partir de la droite. Le point d'entre de ma file est un pointeur sur le dernier element qui lui même pointe sur le premier élément.
Je voudrais faire une fonction dequeue minimaliste, et voilà comment j'ai implémenté l'histoire, lorsque je déroule le code à la main sa fonctionne, quelqu'un pourrait t'il juste confirmer que c'est bon(j'ai tjs un peu de mal quand il s'agit de pointeur sur pointeur).
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| /* --------------------------------------------------------------------------
retirer_dans_file ()
--------------------------------------------------------------------------
Role : retourne l'information utile du premier noeud
--------------------------------------------------------------------------
Condition : la file n'est pas vide
-------------------------------------------------------------------------- */
s_noeud_arbre *retirer_dans_file (s_noeud_file **p_pdernier)
{
/* on utilise un pointeur temporaire pour memoriser une adresse */
s_noeud_file **p_ptmp = &(*p_pdernier)->p_suivant;
/* on sauvegarde l'information utile a revoyer */
s_noeud_arbre *p_noeud_arbre = (*p_ptmp)->p_noeud_arbre;
/* on doit libere le noeud lu */
(*p_pdernier)->p_suivant = (*p_ptmp)->p_suivant;
free (*p_ptmp), *p_ptmp = NULL;
return p_noeud_arbre;
} |
Merci