/* ************************************************************************** */ /* */ /* ::: :::::::: */ /* stack.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: fgras-ca +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/07/31 20:52:17 by fgras-ca #+# #+# */ /* Updated: 2023/07/31 21:01:51 by fgras-ca ### ########.fr */ /* */ /* ************************************************************************** */ #include "push_swap.h" t_stack *get_stack_bottom(t_stack *stack) { while (stack && stack->next != NULL) stack = stack->next; return (stack); } t_stack *get_stack_before_bottom(t_stack *stack) { while (stack && stack->next && stack->next->next != NULL) stack = stack->next; return (stack); } t_stack *stack_new(int value) { t_stack *new; new = malloc(sizeof * new); if (!new) return (NULL); new->value = value; new->index = 0; new->pos = -1; new->target_pos = -1; new->cost_a = -1; new->cost_b = -1; new->next = NULL; return (new); } void stack_add_bottom(t_stack **stack, t_stack *new) { t_stack *tail; if (!new) return ; if (!*stack) { *stack = new; return ; } tail = get_stack_bottom(*stack); tail->next = new; } int get_stack_size(t_stack *stack) { int size; size = 0; if (!stack) return (0); while (stack) { stack = stack->next; size++; } return (size); }