diff options
Diffstat (limited to 'stack.c')
-rw-r--r-- | stack.c | 57 |
1 files changed, 0 insertions, 57 deletions
diff --git a/stack.c b/stack.c deleted file mode 100644 index de5807c..0000000 --- a/stack.c +++ /dev/null @@ -1,57 +0,0 @@ -#include "stack.h" -#include <stdio.h> -#include <stdlib.h> - -// Error handler for stack errors -void stack_error(int id) -{ - switch (id) - { - case 0: - printf("Error: Stack overflow\nBe kind and report this problem."); - break; - case 1: - printf("Error: Stack underflow\nBe kind and report this problem."); - break; - } - exit(1); -} - -// Creates a new stack -struct stack *create_stack(int capacity) -{ - struct stack *pt = (struct stack *)malloc(sizeof(struct stack)); - pt->max_size = capacity; - pt->top = -1; - pt->items = (int *)malloc(sizeof(int) * capacity); - return pt; -} - -// Adds a new item to a stack -void stack_push(struct stack *pt, int x) -{ - // Avoid a overflow by checking if the stack is full - if (pt->top == pt->max_size - 1) - stack_error(0); - // Add an element and increase the top index - pt->items[++pt->top] = x; -} - -// Returns the topmost item of a stack -int stack_peek(struct stack *pt) -{ - // Check if the stack is empty - if (pt->top == -1) - stack_error(1); - return pt->items[pt->top]; -} - -// Deletes the topmost item of a stack -int stack_pop(struct stack *pt) -{ - // Check for a stack underflow - if (pt->top == -1) - stack_error(0); - // Decrease the stack size by 1 and (optionally) return the popped element - return pt->items[pt->top--]; -}
\ No newline at end of file |