Exemplo n.º 1
0
int		partition(t_pile **a, t_pile **b, int left, int right)
{
	int i;
	int j;
	int pivot;
	int h;

	i = left;
	j = right;
	h = ft_lst_len(*a);
	pivot = get_value((j + i) / 2, *a);
	while (i <= j)
	{
		while (get_value(i, *a) < pivot)
			i++;
		while (get_value(j, *a) > pivot)
			j--;
		if (i <= j)
		{
/*			ft_putstr("LEN:");
			ft_putnbr(h);
			ft_putchar('\n');
			ft_putstr("PIVOT:");
			ft_putnbr(pivot);
			ft_putstr("I:");
			ft_putnbr(i);
			ft_putstr("J:");
			ft_putnbr(j);
			ft_putchar('\n');*/
			invers_pos(i, j, a, b);
	//		ft_display_stacks(*a, *b);
			i++;
			j--;
		}
	}
//	printf("I %d\n", i);
	return (i);
}
Exemplo n.º 2
0
t_list	*ft_lstmap(t_list *lst, t_list *(*f)(t_list *elem))
{
	t_list	*tmp_new_map;
	t_list	*new_map;

	if (!lst)
		return (NULL);
	new_map = NULL;
	tmp_new_map = NULL;
	if ((new_map = (t_list *)malloc(ft_lst_len(lst) * sizeof(t_list))))
	{
		new_map = f(ft_lstnew(lst->content, lst->content_size));
		tmp_new_map = new_map;
		lst = lst->next;
		while (lst)
		{
			tmp_new_map->next = f(ft_lstnew(lst->content, lst->content_size));
			tmp_new_map = tmp_new_map->next;
			lst = lst->next;
		}
	}
	return (new_map);
}