/** Arbol B+ */
#include "b_plus.h"
+#include <math.h>
/**#*#*#*#*#**#*#*#*#*#* Private prototypes*#*#*#*#*#**#*#*#*#*#**#*#*#*/
/* numerando los bloques */
int b_plus_split_child(INDEXSPECS *idx, NODO_B_PLUS *parent, int ithchild, NODO_B_PLUS *fullnode);
int b_plus_insert_nonfull(INDEXSPECS *idx, NODO_B_PLUS *nodo, int num_nodo, INDEX_DAT *query);
int b_plus_insertar(INDEXSPECS *idx, INDEX_DAT *query);
+int b_plus_get_num_nodo(INDEXSPECS *idx);
/**#*#*#*#*#**#*#*#*#*#*FIN PROTOTYPES*#*#*#*#*#**#*#*#*#*#**#*#*#*#*#*/
/** Crea un nuevo nodo y lo inicializa */
/* Inserta una nueva clave y reestructura el arbol para que quede como debe */
int b_plus_insertar_clave(INDEXSPECS *idx, INDEX_DAT *query)
{
- NODO_B_PLUS *curnode, *padre, *new_nodo;
+ NODO_B_PLUS *curnode, *padre;
int i,j, prox_nodo;
/* Comienzo leyendo la raiz, entry point de toda funcion */
curnode = b_plus_leer_nodo(idx,0);
{
/* locals */
int minclaves = ceil(idx->size_hijos/sizeof(int)/2)-1;
- int j = 0;
+ int numbrother,j = 0;
int es_interno = 1;
NODO_B_PLUS *brother = b_plus_crearnodo(idx);
fullnode->cant_claves = minclaves;
/* Obtengo numero de nodo para brother, para encadenar */
numbrother = b_plus_get_num_nodo(idx);
- fullnode->hijos[idx->cant_claves+1] = numbrother;
+ fullnode->hijos[idx->size_hijos/sizeof(int)-1] = numbrother;
/* Ahora fixeamos el padre, apuntando al nuevo hijo */
for (j = parent->cant_claves; j > ithchild; --j)
for (j = parent->cant_claves-1; j >= ithchild; --j)
parent->claves[j+1] = parent->claves[j];
parent->claves[ithchild] = fullnode->claves[minclaves];
+
+ return 0;
}
return 0;
}
-int b_plus_split_child(INDEXSPECS *idx, NODO_B_PLUS *new_root, int i, NODO_B_PLUS* raiz)
-{
- return 0;
-}
-
int b_plus_get_num_nodo(INDEXSPECS *idx)
{
FILE *fp;