diff options
Diffstat (limited to 'stack.c')
| -rw-r--r-- | stack.c | 65 |
1 files changed, 0 insertions, 65 deletions
diff --git a/stack.c b/stack.c deleted file mode 100644 index 1014785..0000000 --- a/stack.c +++ /dev/null @@ -1,65 +0,0 @@ -#include "./stack.h" -#include <stdbool.h> -#include <stdlib.h> - -bool stack_is_empty(stack *s) -{ - if (!s || s->top == -1) { - return true; - } - - return false; -} - -stack *new_stack(size_t size) -{ - stack *s = malloc(sizeof(stack)); - if (!s) - return NULL; - - s->data = malloc(size * sizeof(void *)); - if (!s->data) { - free(s); - return NULL; - } - - s->capacity = size; - s->top = -1; - return s; -} - -void free_stack(stack *s) -{ - if (!s) - return; - - free(s->data); - free(s); -} - -void *pop(stack *s) -{ - if (stack_is_empty(s)) - return NULL; - return s->data[s->top--]; -} - -void *peek(stack *s) -{ - if (stack_is_empty(s)) - return NULL; - return s->data[s->top]; -} - -void *push(stack *s, void *data) -{ - if (!s) - return NULL; - - if (s->top + 1 >= s->capacity) { - s->capacity *= 2; - s->data = realloc(s->data, sizeof(void *) * s->capacity); - } - - return s->data[++s->top] = data; -} |
