diff --git a/stack.c b/stack.c
index 27469186a0c3fb480eb73d281b64eac8d52ed6bd..4699c297f6e1c6cb98bf59576eee848c6dd5b544 100644
--- a/stack.c
+++ b/stack.c
@@ -16,3 +16,11 @@ void stack_peek(stack s, int *value){
         *value = s.data[s.top];
     }
 }
+
+void stack_print(const stack s) {
+	printf("          TOP\n--------------------\n");
+	for (int* spot = s.data + s.top; spot >= s.data; --spot) {
+		printf("%8d |  %12d\n", spot - s.data, *spot);
+	}
+	printf("--------------------\n          BOTTOM\n");
+}
diff --git a/stack.h b/stack.h
index 8da80c2f2fff5493b622780eb35d4157b1362621..2ae0c05da8435a16f153938a7b07ab72b83b5282 100644
--- a/stack.h
+++ b/stack.h
@@ -11,4 +11,6 @@ void stack_init(stack *stack);
 
 void stack_peek(stack s, int *value);
 
+void stack_print(const stack s);
+
 #endif