aboutsummaryrefslogtreecommitdiff
path: root/c13/main.c
diff options
context:
space:
mode:
authorCharles <sircharlesaze@gmail.com>2019-07-24 18:46:39 +0200
committerCharles <sircharlesaze@gmail.com>2019-07-24 18:46:58 +0200
commit83edb77d74bb339f3e1324a51039c78ac503db90 (patch)
tree1e69b9330430438fa499f94e864dcfb4d83ea007 /c13/main.c
parent5bab06313e71e9827baa426a02bbaf2a00b4e6a0 (diff)
downloadpiscine-83edb77d74bb339f3e1324a51039c78ac503db90.tar.gz
piscine-83edb77d74bb339f3e1324a51039c78ac503db90.tar.bz2
piscine-83edb77d74bb339f3e1324a51039c78ac503db90.zip
bsq and c13 passed
Diffstat (limited to 'c13/main.c')
-rw-r--r--c13/main.c90
1 files changed, 90 insertions, 0 deletions
diff --git a/c13/main.c b/c13/main.c
new file mode 100644
index 0000000..16e7ebb
--- /dev/null
+++ b/c13/main.c
@@ -0,0 +1,90 @@
+#include <stdio.h>
+#include "ex00/ft_btree.h"
+#include "ex00/btree_create_node.c"
+#include "ex01/btree_apply_prefix.c"
+#include "ex02/btree_apply_infix.c"
+#include "ex03/btree_apply_suffix.c"
+#include "ex04/btree_insert_data.c"
+#include "ex05/btree_search_item.c"
+#include "ex06/btree_level_count.c"
+
+void f_print(void *d);
+int cmp(void *x, void *y);
+int equal(void *x, void *y);
+
+int main()
+{
+ int a = 1;
+ int b = 2;
+ int c = 3;
+ int d = 4;
+ int e = 5;
+ int big = 1000;
+ int bigger = 10000;
+ t_btree *t = btree_create_node(&a);
+ t_btree *l = btree_create_node(&b);
+ t_btree *r = btree_create_node(&c);
+ t->left = l;
+ t->right = r;
+
+ printf("%d %p %p\n", *(int*)t->item, t->left, t->right);
+ printf("%d %p %p", *(int*)l->item, l->left, l->right);
+
+ printf("\n-----------------\n");
+ btree_apply_prefix(t, &f_print);
+
+ printf("\n-----------------\n");
+ btree_apply_infix(t, &f_print);
+
+ printf("\n-----------------\n");
+ btree_apply_suffix(t, &f_print);
+
+ printf("\n-----------------\n");
+ t_btree *sorted = NULL;
+ btree_insert_data(&sorted, &c, &cmp);
+ btree_insert_data(&sorted, &a, &cmp);
+ btree_insert_data(&sorted, &b, &cmp);
+ btree_insert_data(&sorted, &e, &cmp);
+ btree_insert_data(&sorted, &d, &cmp);
+ btree_insert_data(&sorted, &big, &cmp);
+ btree_insert_data(&sorted, &big, &cmp);
+ /*btree_insert_data(&sorted, &bigger, &cmp);*/
+ btree_apply_prefix(sorted, &f_print);
+
+ printf("\n-----------------\n");
+ t_btree *empty = NULL;
+ t_btree *one = btree_create_node(&a);
+ printf("%p\n", btree_search_item(empty, &a, &equal));
+ printf("%p\n", (int*)btree_search_item(empty, &a, &equal));
+ printf("%d\n", *(int*)btree_search_item(sorted, &a, &equal));
+ printf("%d\n", *(int*)btree_search_item(sorted, &big, &equal));
+ /*printf("%d\n", *(int*)btree_search_item(sorted, &bigger, &equal));*/
+
+ printf("\n-----------------\n");
+ printf("%d\n", btree_level_count(sorted));
+ printf("%d\n", btree_level_count(t));
+ printf("%d\n", btree_level_count(empty));
+ printf("%d\n", btree_level_count(one));
+}
+
+void f_print(void *d)
+{
+ printf("%d ", *(int*)d);
+ fflush(stdout);
+}
+
+int cmp(void *x, void *y)
+{
+ if (*(int*)x < *(int*)y)
+ return -1;
+ if (*(int*)x > *(int*)y)
+ return 1;
+ return 0;
+}
+
+int equal(void *x, void *y)
+{
+ if (*(int*)x == *(int*)y)
+ return 0;
+ return 1;
+}