]> git.llucax.com Git - z.facultad/75.06/emufs.git/blob - emufs/indice_b.h
Algunos cambios que se van a necesitar.
[z.facultad/75.06/emufs.git] / emufs / indice_b.h
1
2
3 #ifndef _ARBOL_B_
4 #define _ARBOL_B_ 1
5
6 #include <stdio.h>
7 #include <stdlib.h>
8
9 #include "indices.h"
10
11 typedef struct _b_nodo_header_ {
12         int nivel; /* Numero de nivel. Si es hoja debe ser 0 */
13         int cant; /* Cantidad de items en el nivel */
14         int padre;
15         
16         /* Nodo al que debo ir si la clave a insertar/buscar/borrar
17          * es menor que la primera del nodo
18          */
19         int hijo_izquierdo;
20 } B_NodoHeader;
21
22 typedef struct _b_nodo_entry_ {
23         /* FIXME usar tipo CLAVE */
24         CLAVE clave;
25         /* Si el nivel del nodo == 0, quiere decir que es el 
26          * bloque del archivo de datos donde esta el registro.
27          * Si el nivel != 0, es el siguiente bloque dentro 
28          * del archivo de indice donde buscar
29          */
30         INDICE_DATO dato;
31 } B_NodoEntry;
32
33 /* Crea un arbol */
34 void emufs_indice_b_crear(INDICE *idx);
35
36 /* Inserta un par clave-ubicacion */
37 int emufs_indice_b_insertar(INDICE *idx, CLAVE clave, INDICE_DATO dato);
38
39 /* Busca una clave, retorna ubicacion o -1 si no existe */
40 INDICE_DATO emufs_indice_b_buscar(INDICE *idx, CLAVE clave);
41
42 INDICE_DATO *emufs_indice_b_buscar_muchos(INDICE *idx, CLAVE clave, int *cant);
43
44 #endif
45