From d93508e5f4252dde9825c34037cdd94ece8e1f0b Mon Sep 17 00:00:00 2001
From: "ines.maya" <ines.maya@etu.hesge.ch>
Date: Wed, 1 Dec 2021 01:05:24 +0100
Subject: [PATCH] Resolve "Add pop function that removes top of the stack and
 reallocates if top < capacity / 4"

---
 .gitignore |  2 ++
 stack.c    | 14 +++++++++++++-
 stack.h    |  1 +
 3 files changed, 16 insertions(+), 1 deletion(-)
 create mode 100644 .gitignore

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..96249ce
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,2 @@
+*.o
+main
\ No newline at end of file
diff --git a/stack.c b/stack.c
index 6605c16..82e099b 100644
--- a/stack.c
+++ b/stack.c
@@ -18,6 +18,19 @@ void stack_destroy(stack *s){
     s->top = -1;
 }
 
+void stack_pop(stack *s, int *value){
+	if (stack_is_empty(*s)) {
+		return;
+	}	
+	if (s->top == s->capacity/4){
+		s->capacity /= 2;
+		s->data = realloc(s->data, sizeof(int)*s->capacity);
+	}
+
+	*value = s->data[s->top];
+	s->top -= 1;
+}
+
 void stack_peek(stack s, int *value){
     if (!stack_is_empty(s)) {
         *value = s.data[s.top];
@@ -51,4 +64,3 @@ int get_length(stack s)
 {
     return s.top + 1;
 }
-
diff --git a/stack.h b/stack.h
index 6ccd51b..22defdd 100644
--- a/stack.h
+++ b/stack.h
@@ -11,6 +11,7 @@ void stack_init(stack *stack);
 
 void stack_destroy(stack *s);
 
+void stack_pop(stack *s, int *value);
 void stack_peek(stack s, int *value);
 void stack_clone(stack s, stack *clone);
 int get_length(stack s);
-- 
GitLab