fuckinlem_in/libft/srcs/ft_lstaddsort.c
Tanguy MAZE 54be2278c0 It finnaly kinda works
algorithm with no double nodes and nearly efficient enough
still some optimizations to find for --big-superposition maps
2019-04-18 20:18:50 +02:00

32 lines
1.4 KiB
C

/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* ft_lstaddsort.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: tmaze <tmaze@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2018/10/01 11:57:25 by tmaze #+# #+# */
/* Updated: 2018/10/02 16:43:09 by tmaze ### ########.fr */
/* */
/* ************************************************************************** */
#include "libft.h"
void ft_lstaddsort(t_list **lst, t_list *new, int (*f)(void *c1, void *c2),
int rev)
{
t_list **sort;
sort = lst;
if (*lst == NULL || (!rev && (*f)((*lst)->content, new->content) > 0)
|| (rev && (*f)((*lst)->content, new->content) < 0))
ft_lstadd(lst, new);
else
{
while ((*sort) && ((rev && (*f)((*sort)->content, new->content) >= 0)
|| (!rev && (*f)((*sort)->content, new->content) <= 0)))
sort = &(*sort)->next;
ft_lstadd(&(*sort), new);
}
}