Repository navigation
Expand file tree
/
Copy pathbTreeUtils.h
More file actions
88 lines (70 loc) · 1.99 KB
/
Copy pathbTreeUtils.h
File metadata and controls
88 lines (70 loc) · 1.99 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
#ifndef __BTREEUTILS_H__
#define __BTREEUTILS_H__
/*
* Algoritmos e Estruturas de Dados II
* Autores: Lucas Toschi, Murilo Todão e Marcos Ordonha (Grupo 15)
*
* BTREEUTILS.H
* Neste arquivo estão todas as funções e estruturas que estão
* relacionadas com o funcionamento geral intrínseco da BTree.
*/
#include <stdio.h>
#include <stdlib.h>
#define PAGESIZE 4096
#define MAXCHILDS 171
/*
* Struct responsável por armazenar cada registro.
* Composta por uma chave (número inteiro) e o RRN correspondente.
*/
typedef struct {
int key;
long RRN;
} record;
/*
* Struct responsável por a página da BTree.
* É composta pela struct "record", por um vetor de RRN filhos,
* o número de registros na página e uma flag indicando se é
* uma página folha ou não.
*/
typedef struct {
record records[MAXCHILDS-1];
long childs[MAXCHILDS];
short numRecords;
char isLeaf;
} bTreePage;
/*
* Struct responsável por armazenar um registro que será promovido.
* É composta por um ponteiro de registro e os RRN filhos do registro
* em questão.
*/
typedef struct {
record *rec;
long childs[2];
} promotedKey;
/*
* Struct responsável pelo armazenamento da página da BTree.
* É composta pela página da BTree que será acessada e o RRN
* correspondente no arquivo de dados.
*/
typedef struct {
bTreePage *bPage;
long RRN;
} bPageInfo;
/*
* Função responsável pela criação de uma página da BTree.
*/
bTreePage *createPage();
/*
* Função responsável por criar a raíz da BTree.
*/
bPageInfo *createRoot(FILE *bFile);
/*
* Função responsável por encontrar ou criar a raíz da BTree.
*/
bPageInfo *getOrCreateRoot(FILE *bFile);
/*
* Função que realiza a busca binária na página da BTree a partir do vetor
* de registros e da chave em questão (número inteiro).
*/
long pageBinarySearch(int searchKey, record *records, long firstSearch, long lastSearch);
#endif