]> git.llucax.com Git - z.facultad/75.06/emufs.git/blobdiff - emufs/tipo1_bplus_main.c
rompo todo porque me la banco... a ver si alguien se da cuenta por que se cuelga...
[z.facultad/75.06/emufs.git] / emufs / tipo1_bplus_main.c
index 48cbafb4424a47f0d24a490184d99e70dc611979..adac6a9d1dcc470b4e8157ba2e4fd19b40bb91a0 100644 (file)
@@ -4,6 +4,41 @@
 #include "tipo1.h"
 #include "indices.h"
 #include "indice_bplus.h"
+int no_esta(int num, int* vec, int len)
+{
+       int i, res;
+       res = -1;
+       for(i=0; i<len; i++)
+               if ( vec[i] == num ) res = 0;
+       return res;
+}
+               
+
+void ver_arbol(EMUFS *emu)
+{
+       NODO_B_PLUS *nodo;
+       int num_nodo, num_nodo_ant,i, tecla;
+       num_nodo =0;
+       
+       while ( tecla != -1){
+               nodo = b_plus_leer_nodo(emu->indices, num_nodo);
+               printf("NODO: (hijo)clave\n");
+               printf("Nivel: %d\n", nodo->nivel);
+               for (i=0; i<nodo->cant_claves; i++)
+                       printf("(%d)%d", nodo->hijos[i], nodo->claves[i]);
+               printf("(%d)",nodo->hijos[i]);
+               printf("\n");
+               printf("Ingrese proximo nodo a explorar, o -1 para salir: ");
+               scanf("%d",&tecla);
+               printf("%d\n",tecla);
+               if ( tecla!=0 &&((no_esta(tecla, nodo->hijos, nodo->cant_claves+1) == -1) || (nodo->nivel==0)) ){
+                       num_nodo = num_nodo_ant;
+                       printf("El nodo no existe o es nivel cero\n");
+               }
+               else num_nodo_ant = num_nodo = tecla;
+               b_plus_destruir_nodo(nodo);
+       }
+}      
 
 
 char* cargar_registro(char* texto_ini,int len_ini, CLAVE clave, char *texto_fin, int len_fin)
@@ -40,9 +75,10 @@ int main (int argc,char* argv[])
        int tam_nodo = SIZE_B_PLUS_HEADER + sizeof(CLAVE)*5 + sizeof(CLAVE)*6;
        EMUFS_REG_SIZE len, size;
        int err=0;
+       INDICE_DATO dato;
        
        texto = "PARTE COSNSTANTE, clave =";
-       emu = emufs_crear("test",T1,512,0);
+       emu = emufs_crear("test",T4,512,0);
        emufs_agregar_indice(emu,"claveidx",IND_PRIMARIO,IND_B_PLUS,IDX_INT,strlen(texto),tam_nodo, 0);
        
        
@@ -122,15 +158,19 @@ clave.i_clave = 99;
 emufs_tipo1_eliminar_ordenado(emu, clave, &err);
 clave.i_clave = 95;
 emufs_tipo1_eliminar_ordenado(emu, clave, &err);
-clave.i_clave = 77;
-emufs_tipo1_eliminar_ordenado(emu, clave, &err);
 */
 
+
+clave.i_clave = 77;
+emufs_tipo1_eliminar_ordenado(emu, clave, dato);
+
+
 PERR("LEYENDO REGISTRO");
-clave.i_clave = 99;
+clave.i_clave = 80;
 r = emufs_tipo1_leer_registro_plus(emu, clave, &size, &err);
 
 imprimir_reg(r, strlen(texto), size);
+free(r);
 
 /*
 for ( i=0; i<10000; i++){
@@ -143,6 +183,8 @@ for ( i=0; i<10000; i++){
        free(r);
 }
 */
+
+ver_arbol(emu);
 emufs_destruir(emu);
 
        return 0;