From 4cdb99ea8941005b73450ae166a68eb596a05819 Mon Sep 17 00:00:00 2001 From: "richarda.tyarks" <richard-andre.tyarks@etu.hesge.ch> Date: Fri, 3 Dec 2021 22:24:12 +0100 Subject: [PATCH] * Add push function that reallocates when full capacity is reached. --- stack.c | 17 +++++++++++++++-- stack.h | 2 ++ 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/stack.c b/stack.c index 1e331d9..fc4205b 100644 --- a/stack.c +++ b/stack.c @@ -1,6 +1,6 @@ -#include "stack.h" -#include <stdio.h> #include <stdlib.h> +#include "stack.h" + #define DEFAULT_CAPACITY 4 @@ -17,6 +17,18 @@ void stack_destroy(stack *s) { s->top = -1; } +void stack_push(stack *s, int value) +{ + if (s->top == s->capacity-1) + { + assert(s->data = realloc(s->capacity * 2 * sizeof(int))); + s->capacity=s->capacity * 2; + } + + s->top++; + s->data[s->top] = value; +} + void stack_pop(stack *s, int *value) { if (stack_is_empty(*s)) { return; @@ -62,3 +74,4 @@ void stack_clone(stack s, stack *clone) { int get_length(stack s) { return s.top + 1; } + diff --git a/stack.h b/stack.h index 5ee3740..010bfdc 100644 --- a/stack.h +++ b/stack.h @@ -1,11 +1,13 @@ #ifndef _STACK_H_ #define _STACK_H_ + typedef struct _stack { int *data; int capacity; int top; } stack; +void stack_push(stack *s, int val); void stack_init(stack *stack); -- GitLab