Bonjour,
Bonjour j'ai quelques soucis avec les pointeurs voici mon code je travaille en c. je voudrais pouvoir inserer des entier dans la structure b_arbre_entier qui utilise le module générique b_arbre. mais g des gros soucis avecs les pointeurs:
void inserer_b_arbre_entier(b_arbre_entier self,int elem)
{
void *tmp=(void *)&elem;
inserer_b_arbre(self->deleg,tmp);
}
void
inserer_b_arbre(b_arbre self,void* e)
{
noeud r=self->racine;
if(r->nb_cles==2*self->ordre-1)
{
noeud s=creer_noeud(self->ordre,self->racine->compare,self->racine->taille);
self->racine =s;
s->feuille=false;
s->nb_cles=0;
s->fils=malloc(sizeof(self->racine));
s->fils[0]=r;
partager_enfant(self,s,0,r);
inserer_b_arbre_incomplet(self,s,e);
}
else
inserer_b_arbre_incomplet(self,r,e);
}
int main(void)
{
b_arbre_entier b=creer_b_arbre_entier(2,compare,sizeof(int));
inserer_b_arbre_entier(b,12);
printf("%d\n",*((int*)(*(cles(racine(b->deleg)))))); //afiiche 12 ok
inserer_b_arbre_entier(b,8);
printf("%d\n",*((int*)(*(cles(racine(b->deleg)))))); //affiche 8 ok
printf("%d\n",*((int*)(*(cles(racine(b->deleg))+1)))); // affiche 8 nonnnnnnn!!!
return EXIT_SUCCESS;
}
le soucis est qu'avant meme d'avoir fini la seconde insertion le premier élément est déjà changé. ainsi avant d'avoir affecté la valeur 8 à la structure, le premier élement n'est déjà plus 12 mais 8. je crois que c'est un problème de références mais je ne vois pas du tout mon erreur. si quelqun a une idée svp.