URL: https://linuxfr.org/forums/programmation-c--2/posts/glib-et-les-binary-trees Title: Glib et les Binary Trees Authors: jve Date: 2007年06月28日T16:23:38+02:00 Tags: Score: 0 Bonjour à tous, j'essaie d'utiliser les fonctions B-Tree qu'offre Glib mais je rencontre quelques petits soucis. En fait, j'ajoute des valeurs à la chaine dans un B-Tree et quand je lookup ces valeurs, elles ont disparues... seule reste la dernière ajoutée... voilà mon code : #include <glib.h> #include <stdio.h> #include <stdlib.h> #include <string.h> GTree * redirected_connections; int main(int argc, char **argv) { £spaces£ £/spaces£redirected_connections = g_tree_new((GCompareDataFunc)strcmp); £spaces£ £/spaces£int i; £spaces£ £/spaces£for (i=1; i < 250; i++) £spaces£ £/spaces£{ £spaces£ £/spaces£int value = (i * i); £spaces£ £/spaces£gchar intkey[4]; £spaces£ £/spaces£snprintf(intkey,4, "%d", i); £spaces£ £/spaces£gchar intval[6]; £spaces£ £/spaces£snprintf(intval,6, "%d", value); £spaces£ £/spaces£fprintf(stdout, "add %s:%s\n",intkey, intval ); £spaces£ £/spaces£g_tree_insert(redirected_connections, intkey, intval); £spaces£ £/spaces£} £spaces£ £/spaces£for (i=1;i<250;i++) £spaces£ £/spaces£{ £spaces£ £/spaces£gchar intkey[4]; £spaces£ £/spaces£snprintf(intkey,4, "%d", i); £spaces£ £/spaces£fprintf(stdout, "check value %s:%s\n", intkey, g_tree_lookup(redirected_connections, intkey)); £spaces£ £/spaces£} £spaces£ £/spaces£gint numberofnodes = g_tree_nnodes(redirected_connections); £spaces£ £/spaces£fprintf(stdout, "# of nodes : %d\n",numberofnodes); £spaces£ £/spaces£g_tree_destroy (redirected_connections); } Il se compile chez moi avec la ligne gcc -Wall -o test_b-tree test_b-tree.c `pkg-config --cflags --libs glib-2.0` Je ne comprend pas pourquoi il m'écrase toutes les autres valeurs, il devrait ajouter une feuille à l'arbre à chaque fois et le ré-équilibrer... au lieu de celà, on dirait qu'il écrase l'arbre J'ai fait le même type de code avec les Hash Tables de Glib et ça marche parfaitement... Une idée d'où vient mon erreur ?

AltStyle によって変換されたページ (->オリジナル) /