/* ************************************************************************** */ /* */ /* ::: :::::::: */ /* stack_core.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: cacharle +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/01/19 06:37:45 by cacharle #+# #+# */ /* Updated: 2021/09/10 10:32:43 by charles ### ########.fr */ /* */ /* ************************************************************************** */ #include "common.h" t_stack *stack_new(int size) { t_stack *stack; stack = (t_stack *)malloc(sizeof(t_stack)); if (stack == NULL) return (NULL); stack->elements = (int *)malloc(sizeof(int) * size); if (stack->elements == NULL) { free(stack); return (NULL); } stack->top = -1; stack->tag = STACK_NO_TAG; return (stack); } int stack_destroy(t_stack *stack) { if (stack == NULL) return (1); free(stack->elements); free(stack); return (1); } void stack_push(t_stack *stack, int n) { stack->top++; stack->elements[stack->top] = n; } void stack_pop(t_stack *stack) { if (stack_empty(stack)) return ; stack->top--; } int stack_peek(t_stack *stack) { if (stack_empty(stack)) return (0); return (stack->elements[stack->top]); }