]> git.llucax.com Git - z.facultad/75.06/emufs.git/blob - emufs/indice_b.h
* Mas de claves duplicadas. En teoria "esta completa", hay que ver si con el
[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 "common.h"
10 #include "indices.h"
11
12 typedef struct _b_nodo_header_ {
13         int nivel; /**< Numero de nivel. Si es hoja debe ser 0 */
14         int cant; /**< Cantidad de items en el nivel */
15         int padre;
16         
17         /** Nodo al que debo ir si la clave a insertar/buscar/borrar
18          * es menor que la primera del nodo
19          */
20         int hijo_izquierdo;
21 } B_NodoHeader;
22
23 typedef struct _b_nodo_entry_ {
24         CLAVE clave;
25         /** Dato guardado */
26         INDICE_DATO dato;
27         /** El ID de la hoja de depliega a la derecha */
28         int hijo_derecho;
29 } B_NodoEntry;
30
31 /** Crea un árbol */
32 void emufs_indice_b_crear(INDICE *idx);
33
34 /** Inserta un par clave-ubicacion */
35 int emufs_indice_b_insertar(INDICE *idx, CLAVE clave, INDICE_DATO dato);
36
37 /** Borra una entrada */
38 int emufs_indice_b_borrar(INDICE *idx, CLAVE k);
39
40 /** Busca una clave, retorna ubicacion o -1 si no existe */
41 INDICE_DATO emufs_indice_b_buscar(INDICE *idx, CLAVE clave);
42
43 INDICE_DATO *emufs_indice_b_buscar_muchos(INDICE *idx, CLAVE clave, int *cant);
44
45 #endif
46