]> git.llucax.com Git - z.facultad/75.06/emufs.git/commitdiff
en los tree view ahora se puede pasar al hermano derecho de la hoja
authorNicolás Dimov <ndimov@gmail.com>
Sun, 30 May 2004 19:00:33 +0000 (19:00 +0000)
committerNicolás Dimov <ndimov@gmail.com>
Sun, 30 May 2004 19:00:33 +0000 (19:00 +0000)
emufs/tipo1_bplus_main.c
emufs/tipo3_bplus_main.c

index 119600a2d63512110e29a75026426ab05e8bee9e..6476d7936b495382a64c127637134c4817e1dae5 100644 (file)
@@ -19,7 +19,7 @@ void ver_arbol(EMUFS *emu)
        NODO_B_PLUS *nodo;
        int num_nodo, num_nodo_ant,i, tecla;
        num_nodo =0;
        NODO_B_PLUS *nodo;
        int num_nodo, num_nodo_ant,i, tecla;
        num_nodo =0;
-       
+       num_nodo_ant=0;
        while ( tecla != -1){
                nodo = b_plus_leer_nodo(emu->indices, num_nodo);
                printf("NODO: (hijo)clave\n");
        while ( tecla != -1){
                nodo = b_plus_leer_nodo(emu->indices, num_nodo);
                printf("NODO: (hijo)clave\n");
@@ -31,7 +31,15 @@ void ver_arbol(EMUFS *emu)
                printf("Ingrese proximo nodo a explorar, o -1 para salir: ");
                scanf("%d",&tecla);
                printf("%d\n",tecla);
                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)) ){
+               if (tecla == 0){ 
+                       num_nodo = 0;
+                       continue;
+               }                       
+               if ( tecla == nodo->hijos[nodo->cant_claves] && nodo->nivel == 0){
+                       num_nodo = nodo->hijos[nodo->cant_claves];
+                       continue;
+               }
+               if ( (no_esta(tecla, nodo->hijos, nodo->cant_claves+1) == -1)) {
                        num_nodo = num_nodo_ant;
                        printf("El nodo no existe o es nivel cero\n");
                }
                        num_nodo = num_nodo_ant;
                        printf("El nodo no existe o es nivel cero\n");
                }
@@ -71,13 +79,14 @@ int main (int argc,char* argv[])
        CLAVE clave;
        char *texto, *texto2;
        char *r;
        CLAVE clave;
        char *texto, *texto2;
        char *r;
+       int tecla;
        EMUFS *emu;
        int tam_nodo = SIZE_B_PLUS_HEADER + sizeof(CLAVE)*5 + sizeof(CLAVE)*6;
        EMUFS_REG_SIZE len, size;
        int err=0, i;
        INDICE_DATO dato;
        B_PLUS_KEYBUCKET *v;    
        EMUFS *emu;
        int tam_nodo = SIZE_B_PLUS_HEADER + sizeof(CLAVE)*5 + sizeof(CLAVE)*6;
        EMUFS_REG_SIZE len, size;
        int err=0, i;
        INDICE_DATO dato;
        B_PLUS_KEYBUCKET *v;    
-       
+       INDEX_DAT query;
        
        texto = "PARTE COSNSTANTE, clave =";
        emu = emufs_crear("test",T4,512,0);
        
        texto = "PARTE COSNSTANTE, clave =";
        emu = emufs_crear("test",T4,512,0);
@@ -209,6 +218,15 @@ for (i=0; i<v->cant_keys; i++)
        printf("v[%d] = %d\n", i, v->claves[i]);
 
 ver_arbol(emu);
        printf("v[%d] = %d\n", i, v->claves[i]);
 
 ver_arbol(emu);
+
+printf("Buscar el POST de:\n");
+scanf("%d", &tecla);
+clave.i_clave = tecla;
+PERR("BUSCANDO");
+b_plus_buscar_prepost(emu->indices, clave, 0, &query, 1);
+
+printf("el post de %d, es %d\n", clave, query.clave);
+
 emufs_destruir(emu);
 
        return 0;
 emufs_destruir(emu);
 
        return 0;
index 74f10662e81518fced349edf8130476677bcd85e..f32a7daa9d4ec6b234f81008f49432eb0b1ce875 100644 (file)
@@ -33,7 +33,15 @@ void ver_arbol(EMUFS *emu)
                printf("Ingrese proximo nodo a explorar, o -1 para salir: ");
                scanf("%d",&tecla);
                printf("%d\n",tecla);
                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)) ){
+               if (tecla == 0){ 
+                       num_nodo = 0;
+                       continue;
+               }                       
+               if ( tecla == nodo->hijos[nodo->cant_claves] && nodo->nivel == 0){
+                       num_nodo = nodo->hijos[nodo->cant_claves];
+                       continue;
+               }
+               if ( (no_esta(tecla, nodo->hijos, nodo->cant_claves+1) == -1)) {
                        num_nodo = num_nodo_ant;
                        printf("El nodo no existe o es nivel cero\n");
                }
                        num_nodo = num_nodo_ant;
                        printf("El nodo no existe o es nivel cero\n");
                }