+ /* RECORDAR QUE LAS CLAVES DEBEN ESTAR ORDENADAS PARA QUE ESTO FUNCIONE !! */
+ while (curnode->nivel > 0)
+ { /*recorro las claves hasta encontrar la primera mayor a la que quiero insertar*/
+ for(i=0; i<=curnode->cant_claves; i++){ /* ojo si la cant_claves es cero!!!!*/
+ /* me fijo que si es mayor */
+ if ( (query->clave.i_clave >= curnode->claves[i])) {
+ if ( curnode->cant_claves != i ) /* si no es la ultima clave del nodo */
+ continue; /*paso a la siguiente*/
+ else { /* si era la ultima, la clave deberia ir ahi */
+ /*cargo el proximo nodo*/
+ prox_nodo = curnode->hijos[i+1];
+ break; /*salgo del for*/
+ }
+ } else { /*si no es mayor o igual es menor*/
+ prox_nodo = curnode->hijos[i];
+ break;
+ }
+ }
+ free(curnode);
+ curnode = b_plus_leer_nodo(idx, prox_nodo);
+ }
+ /*cuando salgo de aca deberia tener cargado en curnode el nodo hoja que busque*/
+ for (i=0; i<=curnode->cant_claves-1; i++){
+ if ( query->clave.i_clave > curnode->claves[i] ){
+ if ( curnode->cant_claves != i ) /* si no es la ultima clave */
+ continue;
+ else { /* si era la ultima */
+ /* cargo en query el numero del bloque donde deberia ir la nueva clave */
+ query->num_bloque = curnode->hijos[i];
+ free(curnode);
+ return 0;
+ }
+ } else { /* si no era mayor, era menor */
+ /* guardo el bloque anterior porque me pase.. */
+ query->num_bloque = curnode->hijos[i-1];
+ free(curnode);
+ return 0;
+ }