From dd2e4b8dde55c139e7eaaa561b59df1b69aa99dd Mon Sep 17 00:00:00 2001 From: Jack Halford Date: Tue, 15 Nov 2016 20:21:15 +0100 Subject: [PATCH] btree stuff --- libft/includes/btree.h | 2 ++ libft/includes/libft.h | 3 +- libft/src/btree/btree_apply_infix.c | 2 +- libft/src/btree/btree_apply_suffix.c | 2 +- libft/src/btree/btree_create_node.c | 14 +++++----- libft/src/btree/btree_insert_data.c | 13 +++++---- libft/src/btree/btree_print.c | 41 ++++++++++++++++++++++++++++ libft/src/dlst/ft_dlstdel.c | 38 +++++++++++++++++++++++--- libft/src/dlst/ft_dlstdelone.c | 2 +- libft/src/dlst/ft_dlstrtostr.c | 4 +-- libft/src/lst/ft_lst_delif.c | 2 +- libft/src/lst/ft_lstdelone.c | 2 +- libft/src/math/ft_addrcmp.c | 18 ++++++++++++ libft/src/path/ft_path_findfile.c | 0 libft/src/sstr/ft_sstradd.c | 2 +- libft/src/sstr/ft_sstrfree.c | 11 ++++++-- 16 files changed, 127 insertions(+), 29 deletions(-) create mode 100644 libft/src/btree/btree_print.c create mode 100644 libft/src/math/ft_addrcmp.c delete mode 100644 libft/src/path/ft_path_findfile.c diff --git a/libft/includes/btree.h b/libft/includes/btree.h index 6e6d4215..c31ca5a2 100644 --- a/libft/includes/btree.h +++ b/libft/includes/btree.h @@ -18,6 +18,7 @@ t_btree *btree_create_node(void const *item, size_t content_size); void btree_insert_data( t_btree **root, void *item, + size_t content_size, int (*cmpf)(void *, void *)); void *btree_search_item(t_btree *root, @@ -27,5 +28,6 @@ int btree_level_count(t_btree *root); void btree_apply_prefix(t_btree *root, void (*applyf)(void *)); void btree_apply_infix(t_btree *root, void (*applyf)(void *)); void btree_apply_suffix(t_btree *root, void (*applyf)(void *)); +void btree_print(t_btree* tree, void (*printer)(t_btree *tree)); #endif diff --git a/libft/includes/libft.h b/libft/includes/libft.h index 39f21ec7..f3714ec2 100644 --- a/libft/includes/libft.h +++ b/libft/includes/libft.h @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/07 13:49:04 by jhalford #+# #+# */ -/* Updated: 2016/11/11 17:47:12 by jhalford ### ########.fr */ +/* Updated: 2016/11/14 16:31:04 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -114,6 +114,7 @@ size_t ft_ilen_base(int n, int base); size_t ft_uilen(unsigned int n); size_t ft_lllen(long long n); size_t ft_lllen_base(long long n, int base); +int ft_addrcmp(void *a, void *b); char **ft_sstradd(char **list, char *new); void ft_sstrsort(char **list, int size, int (*cmp)()); diff --git a/libft/src/btree/btree_apply_infix.c b/libft/src/btree/btree_apply_infix.c index 65d2b5d6..f4b95302 100644 --- a/libft/src/btree/btree_apply_infix.c +++ b/libft/src/btree/btree_apply_infix.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/08/16 13:43:51 by jhalford #+# #+# */ -/* Updated: 2016/08/18 21:10:05 by jhalford ### ########.fr */ +/* Updated: 2016/11/14 11:58:47 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/libft/src/btree/btree_apply_suffix.c b/libft/src/btree/btree_apply_suffix.c index 9cf8b4ea..08f01881 100644 --- a/libft/src/btree/btree_apply_suffix.c +++ b/libft/src/btree/btree_apply_suffix.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/08/16 13:43:51 by jhalford #+# #+# */ -/* Updated: 2016/08/18 21:11:19 by jhalford ### ########.fr */ +/* Updated: 2016/11/14 16:08:23 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/libft/src/btree/btree_create_node.c b/libft/src/btree/btree_create_node.c index 83170a7f..18f50233 100644 --- a/libft/src/btree/btree_create_node.c +++ b/libft/src/btree/btree_create_node.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/08/16 13:43:51 by jhalford #+# #+# */ -/* Updated: 2016/08/19 23:32:10 by jhalford ### ########.fr */ +/* Updated: 2016/11/14 16:11:49 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,14 +14,13 @@ t_btree *btree_create_node(void const *item, size_t content_size) { - t_btree *node; + t_btree *new; - if (!(node = (t_btree *)malloc(sizeof(t_btree)))) + if (!(new = (t_btree *)malloc(sizeof(t_btree)))) return (NULL); - node->left = 0; - node->right = 0; - return (node); - if (!content) + new->left = 0; + new->right = 0; + if (!item) { new->content_size = 0; new->item = NULL; @@ -32,4 +31,5 @@ t_btree *btree_create_node(void const *item, size_t content_size) new->item = ft_memalloc(content_size + 1); ft_memcpy(new->item, item, content_size); } + return (new); } diff --git a/libft/src/btree/btree_insert_data.c b/libft/src/btree/btree_insert_data.c index 1c88672e..a6e262fc 100644 --- a/libft/src/btree/btree_insert_data.c +++ b/libft/src/btree/btree_insert_data.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/08/16 13:43:51 by jhalford #+# #+# */ -/* Updated: 2016/08/19 14:12:59 by jhalford ### ########.fr */ +/* Updated: 2016/11/14 16:12:47 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,28 +15,29 @@ void btree_insert_data( t_btree **root, void *item, + size_t content_size, int (*cmpf)(void *, void *)) { t_btree *node; if (!*root) { - *root = btree_create_node(item); + *root = btree_create_node(item, content_size); return ; } node = *root; if ((*cmpf)(item, node->item) < 0) { if (node->left) - btree_insert_data(&node->left, item, cmpf); + btree_insert_data(&node->left, item, content_size, cmpf); else - node->left = btree_create_node(item); + node->left = btree_create_node(item, content_size); } else { if (node->right) - btree_insert_data(&node->right, item, cmpf); + btree_insert_data(&node->right, item, content_size, cmpf); else - node->right = btree_create_node(item); + node->right = btree_create_node(item, content_size); } } diff --git a/libft/src/btree/btree_print.c b/libft/src/btree/btree_print.c new file mode 100644 index 00000000..c236a5d2 --- /dev/null +++ b/libft/src/btree/btree_print.c @@ -0,0 +1,41 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* btree_print.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: jhalford +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2016/11/14 18:06:24 by jhalford #+# #+# */ +/* Updated: 2016/11/14 18:26:32 by jhalford ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "btree.h" + +static void print_offset(int offset) +{ + int i; + for (i = 0; i < offset; ++i) + { + ft_putstr(" "); + } +} + +void btree_print(t_btree* tree, void (*printer)(t_btree *tree)) +{ + static int offset = 0; + + print_offset(offset); + + if (tree == NULL) + { + ft_putendl("-"); + return; + } + (*printer)(tree); + + offset += 3; + btree_print(tree->right, printer); + btree_print(tree->left, printer); + offset -= 3; +} diff --git a/libft/src/dlst/ft_dlstdel.c b/libft/src/dlst/ft_dlstdel.c index 43131fb7..24adc231 100644 --- a/libft/src/dlst/ft_dlstdel.c +++ b/libft/src/dlst/ft_dlstdel.c @@ -1,11 +1,41 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_dlstdel.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: jhalford +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2016/11/14 17:55:40 by jhalford #+# #+# */ +/* Updated: 2016/11/14 17:57:46 by jhalford ### ########.fr */ +/* */ +/* ************************************************************************** */ + #include "libft.h" +static void ft_dlstdelback(t_dlist **alst, void (*del)(void *, size_t)) +{ + if (alst && *alst && del) + { + ft_dlstdelback(&(*alst)->prev, del); + ft_dlstdelone(alst, del); + } +} + +static void ft_dlstdelfront(t_dlist **alst, void (*del)(void *, size_t)) +{ + if (alst && *alst && del) + { + ft_dlstdelfront(&(*alst)->next, del); + ft_dlstdelone(alst, del); + } +} + void ft_dlstdel(t_dlist **alst, void (*del)(void *, size_t)) { - if (alst && *alst) + if (alst && *alst && del) { - ft_dlstdel(&(*alst)->next, del); - ft_dlstdel(&(*alst)->prev, del); + ft_dlstdelback(&(*alst)->prev, del); + ft_dlstdelfront(&(*alst)->next, del); + ft_dlstdelone(alst, del); } - ft_dlstdelone(alst, del); } diff --git a/libft/src/dlst/ft_dlstdelone.c b/libft/src/dlst/ft_dlstdelone.c index a83bf62e..55826853 100644 --- a/libft/src/dlst/ft_dlstdelone.c +++ b/libft/src/dlst/ft_dlstdelone.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/07 13:27:13 by jhalford #+# #+# */ -/* Updated: 2016/11/07 13:27:13 by jhalford ### ########.fr */ +/* Updated: 2016/11/14 17:52:58 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/libft/src/dlst/ft_dlstrtostr.c b/libft/src/dlst/ft_dlstrtostr.c index be96ba71..e92e4d8a 100644 --- a/libft/src/dlst/ft_dlstrtostr.c +++ b/libft/src/dlst/ft_dlstrtostr.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/07 13:27:29 by jhalford #+# #+# */ -/* Updated: 2016/11/07 13:31:08 by jhalford ### ########.fr */ +/* Updated: 2016/11/14 16:13:24 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -20,7 +20,7 @@ char *ft_dlsttostr(t_dlist *list) return (NULL); while (list->prev) list = list->prev; - str = (char *)ft_strnew(sizeof(char) * (ft_dlst_size(list) + 2)); + str = (char *)ft_strnew(sizeof(char) * (ft_dlstsize(list) + 2)); while (list) { ft_strcat(str, (char *)list->content); diff --git a/libft/src/lst/ft_lst_delif.c b/libft/src/lst/ft_lst_delif.c index 2e319aa9..b1d11a0a 100644 --- a/libft/src/lst/ft_lst_delif.c +++ b/libft/src/lst/ft_lst_delif.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/04 11:09:12 by jhalford #+# #+# */ -/* Updated: 2016/11/08 15:00:24 by jhalford ### ########.fr */ +/* Updated: 2016/11/14 16:55:27 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/libft/src/lst/ft_lstdelone.c b/libft/src/lst/ft_lstdelone.c index d9b05960..a360b486 100644 --- a/libft/src/lst/ft_lstdelone.c +++ b/libft/src/lst/ft_lstdelone.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/03 14:57:15 by jhalford #+# #+# */ -/* Updated: 2016/11/08 13:45:13 by jhalford ### ########.fr */ +/* Updated: 2016/11/14 15:50:00 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/libft/src/math/ft_addrcmp.c b/libft/src/math/ft_addrcmp.c new file mode 100644 index 00000000..f3b4f790 --- /dev/null +++ b/libft/src/math/ft_addrcmp.c @@ -0,0 +1,18 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_addrcmp.h :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: jhalford +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2016/11/14 15:59:10 by jhalford #+# #+# */ +/* Updated: 2016/11/14 15:59:39 by jhalford ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "libft.h" + +int ft_addrcmp(void *a, void *b) +{ + return (a - b); +} diff --git a/libft/src/path/ft_path_findfile.c b/libft/src/path/ft_path_findfile.c deleted file mode 100644 index e69de29b..00000000 diff --git a/libft/src/sstr/ft_sstradd.c b/libft/src/sstr/ft_sstradd.c index e88b1651..55cad1f1 100644 --- a/libft/src/sstr/ft_sstradd.c +++ b/libft/src/sstr/ft_sstradd.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/03 18:03:58 by jhalford #+# #+# */ -/* Updated: 2016/11/10 12:15:23 by jhalford ### ########.fr */ +/* Updated: 2016/11/14 16:31:02 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/libft/src/sstr/ft_sstrfree.c b/libft/src/sstr/ft_sstrfree.c index 05686e2b..14a833eb 100644 --- a/libft/src/sstr/ft_sstrfree.c +++ b/libft/src/sstr/ft_sstrfree.c @@ -6,7 +6,7 @@ /* By: jhalford +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2016/11/08 17:01:24 by jhalford #+# #+# */ -/* Updated: 2016/11/10 12:11:20 by jhalford ### ########.fr */ +/* Updated: 2016/11/14 11:08:19 by jhalford ### ########.fr */ /* */ /* ************************************************************************** */ @@ -17,9 +17,14 @@ void ft_sstrfree(char **sstr) int i; i = 0; - while (sstr[i]) + if (sstr) { + while (sstr[i]) + { + ft_strdel(sstr + i); + i++; + } ft_strdel(sstr + i); - i++; + free(sstr); } }