summaryrefslogtreecommitdiff
path: root/src/btree_naive.c
diff options
context:
space:
mode:
author0scar <qgt268@alumni.ku.dk>2021-11-16 13:37:39 +0000
committer0scar <qgt268@alumni.ku.dk>2021-11-16 13:37:39 +0000
commit52eb65c28f673b4c4bedce890354a4f678e92ac8 (patch)
tree861d47c193937ca7d7f004e591650d1bbf4bb9f2 /src/btree_naive.c
parent6f472f95f5a4ce19b412220f1e422f3976554d20 (diff)
Fix warnings
Diffstat (limited to 'src/btree_naive.c')
-rw-r--r--src/btree_naive.c25
1 files changed, 10 insertions, 15 deletions
diff --git a/src/btree_naive.c b/src/btree_naive.c
index fce778b..6abf49a 100644
--- a/src/btree_naive.c
+++ b/src/btree_naive.c
@@ -195,7 +195,6 @@ void node_tree_split_child(
void node_child_merge(
struct node *x,
ssize_t i,
- const ssize_t t,
const size_t elem_size) {
struct node* y = x->children[i ];
struct node* z = x->children[i+1];
@@ -238,12 +237,11 @@ void node_child_merge(
void node_shift_left(
struct node *x,
ssize_t i,
- const ssize_t t,
const size_t elem_size) {
struct node* y = x->children[i ];
struct node* z = x->children[i+1];
byte *x_k = x->items + (elem_size * i);
- long unsigned j = 0;
+ ssize_t j = 0;
/* Append x.k[i] to y */
memcpy(y->items + (elem_size * y->n++),
@@ -277,7 +275,6 @@ void node_shift_left(
void node_shift_right(
struct node *x,
ssize_t i,
- const ssize_t t,
const size_t elem_size) {
struct node* y = x->children[i ];
struct node* z = x->children[i+1];
@@ -459,7 +456,7 @@ int node_delete(struct node *x,
}
/* Recursively delete kk from y */
- node_delete(y, kk, cmp, degree, elem_size);
+ return node_delete(y, kk, cmp, degree, elem_size);
/* replace k with kk */
memcpy(x->items + (elem_size * i),
@@ -486,7 +483,7 @@ int node_delete(struct node *x,
}
/* Recursively delete kk from y */
- node_delete(z, kk, cmp, degree, elem_size);
+ return node_delete(z, kk, cmp, degree, elem_size);
/* replace k with kk */
memcpy(x->items + (elem_size * i),
@@ -498,17 +495,18 @@ int node_delete(struct node *x,
return 1;
} else {
/* Merge k and z into y */
- node_child_merge(x, i, degree, elem_size);
+ node_child_merge(x, i, elem_size);
/* recurse */
return node_delete(x->children[i], key, cmp, degree, elem_size);
}
}
+ } else if (node_leaf(x)) {
+ return 0;
} else {
/* 3. !(k ϵ x) */
/* if x is a leaf, then it is not in the tree */
- if (node_leaf(x)) return 0;
struct node* y;
int ii; /* index of x.c[i] */
@@ -525,19 +523,19 @@ int node_delete(struct node *x,
if (y->n < degree) {
/* we are left biased */
if (ii > 0 && x->children[ii-1]->n >= degree) {
- node_shift_right(x, ii-1, degree, elem_size);
+ node_shift_right(x, ii-1, elem_size);
} else if (ii < x->c - 1 && x->children[ii+1]->n >= degree) {
- node_shift_left (x, ii, degree, elem_size);
+ node_shift_left (x, ii, elem_size);
} else {
/* We need to determine wether we merge left or right, if possible */
if (ii > 0) {
- node_child_merge(x, ii - 1, degree, elem_size);
+ node_child_merge(x, ii - 1, elem_size);
y = x->children[ii - 1];
}
else if (ii < x->c - 1) {
- node_child_merge(x, ii, degree, elem_size);
+ node_child_merge(x, ii, elem_size);
}
else {
perror("Cannot merge!");
@@ -619,9 +617,6 @@ int btree_delete(struct btree *btree, void *elem) {
return res;
}
-void* btree_update(struct btree *btree, void *elem_key, void *elem) {}
-
-
void node_print(struct node *root, const size_t elem_size, const int indent, void (*print_elem)(const void*)) {
ssize_t i;
int t;