fix: lstdel && feat: del red black tree

This commit is contained in:
gbrochar 2024-10-25 14:45:15 +02:00
parent e846b98fcd
commit cf6bb62030
3 changed files with 18 additions and 8 deletions

View File

@ -6,7 +6,7 @@
/* By: gbrochar <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2015/11/30 21:34:50 by gbrochar #+# #+# */
/* Updated: 2015/12/05 15:10:37 by gbrochar ### ########.fr */
/* Updated: 2024/10/25 14:32:43 by gbrochar ### ########.fr */
/* */
/* ************************************************************************** */
@ -14,12 +14,10 @@
void ft_lstdel(t_list **alst, void (*del)(void *, size_t))
{
t_list *tmp;
while (*alst)
if (*alst)
{
tmp = *alst;
ft_lstdelone(alst, del);
*alst = tmp->next;
ft_lstdel(&(*alst)->next, del);
del((*alst)->content, (*alst)->content_size);
ft_memdel((void **)alst);
}
}

View File

@ -1,5 +1,16 @@
#include "libft.h"
void ft_delrbt(t_node *node, void (*f)(void *data)) {
if (!(node)) {
return;
}
ft_delrbt(node->left, f);
ft_delrbt(node->right, f);
f((void *)node);
free(node->data);
free(node);
}
void ft_putrbt(t_node *node, void (*f)(void *data)) {
if (!(node)) {
return;

View File

@ -6,7 +6,7 @@
/* By: gbrochar <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2015/11/24 12:52:28 by gbrochar #+# #+# */
/* Updated: 2024/10/20 18:36:39 by gbrochar ### ########.fr */
/* Updated: 2024/10/25 13:56:13 by gbrochar ### ########.fr */
/* */
/* ************************************************************************** */
@ -46,6 +46,7 @@ typedef t_node t_leaf;
void ft_rbt_insert(t_root **root, t_node *z, int (*f)(void *a, void *b));
t_node *ft_rbt_new(void *data, size_t size);
void ft_putrbt(t_node *node, void (*f)(void *data));
void ft_delrbt(t_node *node, void (*f)(void *data));
void ft_lstadd(t_list **alst, t_list *new);
void ft_lstadd_back(t_list **alst, t_list *new);
void ft_lstinsert(t_list **lst, t_list *new, int (*f)(t_list *a, t_list *b));