From 2b4327b7a448228f67a054b4bdaa3f84b9db2164 Mon Sep 17 00:00:00 2001 From: Charles Date: Sun, 19 Jan 2020 08:38:07 +0100 Subject: refactored stack functions and checking for duplicates in args --- src/common/stack_core.c | 56 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 src/common/stack_core.c (limited to 'src/common/stack_core.c') diff --git a/src/common/stack_core.c b/src/common/stack_core.c new file mode 100644 index 0000000..6875862 --- /dev/null +++ b/src/common/stack_core.c @@ -0,0 +1,56 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* stack_core.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: cacharle +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/01/19 06:37:45 by cacharle #+# #+# */ +/* Updated: 2020/01/19 06:50:50 by cacharle ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "common.h" + +t_stack *stack_new(int size) +{ + t_stack *stack; + + if ((stack = (t_stack*)malloc(sizeof(t_stack))) == NULL) + return (NULL); + if ((stack->elements = (int*)malloc(sizeof(int) * size)) == NULL) + { + free(stack); + return (NULL); + } + stack->top = -1; + return (stack); +} + +void stack_destroy(t_stack *stack) +{ + if (stack == NULL) + return ; + free(stack->elements); + free(stack); +} + +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]); +} -- cgit