我一直在尝试使用c实现btree,并且我在删除正确并正常工作方面遇到了一些困难。下面的代码编译好,但它不起作用。我一直在调试它并试图找出错误的原因以及它为什么不能正常工作并解决问题。 所以我要问的是,任何人都可以用一双新眼睛看到它的问题并指出我正确的方向。
btree.h file
#define BTREE_H
#define ordem 3
#define maxfilhos 2*ordem
#define maxchaves 2*ordem-1
typedef struct InfoPalavra infoPalavra;
struct InfoPalavra {
int idPalavra;
char palavraFicheiro[32];
};
typedef struct btree btree;
struct btree {
int folha;
int n;
infoPalavra chave[maxchaves];
//int chave[maxchaves];
//infoPalavra *chave;
struct btree *filho[maxfilhos];
};
#endif /* BTREE_H */
btree.c
void recursive_delete(btree *t)
{
int i;
for(i=0; i<maxfilhos; i++)
{
if (t->filho[i]) {
recursive_delete(t->filho[i]);
}
//if(t->filho[i]!=0)
//recursive_delete(t->filho[i]);
}
free(t);
}