+ if (izquierda_id != -1) b_grabar_nodo(idx, izquierda_id, izq);
+ if (derecha_id != -1) b_grabar_nodo(idx, derecha_id, der);
+ if (padre_id != -1) b_grabar_nodo(idx, padre_id, padre);
if (actual_id != -1) free(actual);
if (derecha_id != -1) free(der);
if (izquierda_id != -1) free(izq);
if (actual_id != -1) free(actual);
if (derecha_id != -1) free(der);
if (izquierda_id != -1) free(izq);
@@ -805,19+805,24 @@ void b_pedir_clave_izquierda(char *izq, int izq_id, char *padre, int padre_id, c
b_leer_header(padre, &h_padre);
c_padre = b_leer_claves(padre, &h_padre);
b_leer_header(padre, &h_padre);
c_padre = b_leer_claves(padre, &h_padre);
- for(i=h_nodo.cant; i>0;i++)
+ PERR("Muevo las claves");
+ for(i=h_nodo.cant; i>0;i--)
c_nodo[i] = c_nodo[i-1];
h_nodo.cant++;
c_nodo[i] = c_nodo[i-1];
h_nodo.cant++;
+ PERR("Paso clave de padre a nodo");
c_nodo[0] = c_padre[pos_clave];
c_nodo[0].hijo_derecho = -1; /* XXX */
c_nodo[0] = c_padre[pos_clave];
c_nodo[0].hijo_derecho = -1; /* XXX */
+ PERR("Paso clave de izquierda a padre");
c_padre[pos_clave] = c_izq[h_izq.cant-1];
c_padre[pos_clave] = c_izq[h_izq.cant-1];
- c_padre[pos_clave].hijo_derecho = izq_id;
+ c_padre[pos_clave].hijo_derecho = nodo_id;
h_izq.cant--;
h_izq.cant--;
+ PERR("ACTUALIZO")
b_actualizar_header(izq, &h_izq);
b_actualizar_header(padre, &h_padre);
b_actualizar_header(nodo, &h_nodo);
b_actualizar_header(izq, &h_izq);
b_actualizar_header(padre, &h_padre);
b_actualizar_header(nodo, &h_nodo);
+ PERR("Salgo");
}
void b_pasar_clave_a_izquierda(INDICE* idx, char *izq, int izq_id, char *padre, int padre_id, int padre_pos, B_NodoEntry entry, int id_entry_hijo_izq, int id_entry_nodo)
}
void b_pasar_clave_a_izquierda(INDICE* idx, char *izq, int izq_id, char *padre, int padre_id, int padre_pos, B_NodoEntry entry, int id_entry_hijo_izq, int id_entry_nodo)