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