summaryrefslogtreecommitdiff
path: root/Algorithms/BPlusTree
diff options
context:
space:
mode:
authorCarlos Maiolino <[email protected]>2025-07-10 22:55:07 +0200
committerCarlos Maiolino <[email protected]>2025-07-10 22:56:55 +0200
commitd98f46ce647846b0aa30b2e16a30fd4e152a1bf5 (patch)
tree267474fcc77cf20b428f6f4c7f768ca09f4cfe0e /Algorithms/BPlusTree
parent869e68986aa8f69af6e7842260a68d1e5c6f796f (diff)
Add new code
Signed-off-by: Carlos Maiolino <[email protected]>
Diffstat (limited to 'Algorithms/BPlusTree')
-rw-r--r--Algorithms/BPlusTree/btreebin0 -> 8384 bytes
-rw-r--r--Algorithms/BPlusTree/btree.c60
-rw-r--r--Algorithms/BPlusTree/btree.h23
3 files changed, 83 insertions, 0 deletions
diff --git a/Algorithms/BPlusTree/btree b/Algorithms/BPlusTree/btree
new file mode 100644
index 0000000..7b9ebf2
--- /dev/null
+++ b/Algorithms/BPlusTree/btree
Binary files differ
diff --git a/Algorithms/BPlusTree/btree.c b/Algorithms/BPlusTree/btree.c
new file mode 100644
index 0000000..41d96b0
--- /dev/null
+++ b/Algorithms/BPlusTree/btree.c
@@ -0,0 +1,60 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdbool.h>
+
+#include "btree.h"
+
+struct b_node *ROOT;
+
+struct b_node* init_node(void)
+{
+ struct b_node* node;
+ node = malloc(sizeof(struct b_node));
+
+ if (!node)
+ return NULL;
+
+ node->key_count = 0;
+ node->is_leaf = false;
+ node->keys = NULL;
+ node->ptrs = NULL;
+ node->leaf = NULL;
+
+ return node;
+}
+
+void print_leaf(struct b_node *node)
+{
+ if (!node->is_leaf) {
+ printf("Error: trying to print a node instead of a leaf\n");
+ return;
+ }
+
+ /* printf(" Parent node: */
+ printf("Data: %d\n", node->leaf->data);
+ printf("Next sib: %p\n", node->leaf->)
+
+void print_root(void)
+{
+ printf("This is the ROOT of the tree \n");
+
+ if (ROOT->is_leaf)
+ print_leaf(ROOT);
+ else
+ print_node(ROOT);
+}
+
+int main(void) {
+
+ ROOT = init_node();
+ if (!ROOT) {
+ printf("Error to initialize root node\n");
+ goto exit0;
+ }
+
+ printf("ROOT: %p\n", ROOT);
+ free(ROOT);
+
+exit0:
+ return 0;
+}
diff --git a/Algorithms/BPlusTree/btree.h b/Algorithms/BPlusTree/btree.h
new file mode 100644
index 0000000..a045dd4
--- /dev/null
+++ b/Algorithms/BPlusTree/btree.h
@@ -0,0 +1,23 @@
+
+#define ORDER 4
+#define PTRS 5
+
+/*
+ * ptrs: will point to data when the node is a leaf
+ * will contain the next nodes when just a node
+ * accessed as an array MAX = PTRS
+ * sib: will only be valid when the node is a leaf
+ */
+struct b_node {
+ int key_count;
+ bool is_leaf;
+ int *keys;
+ void **ptrs;
+ struct b_leaf *leaf;
+ struct b_node *sib;
+};
+
+struct b_leaf {
+ int data;
+ struct b_leaf *sib;
+};