From 40e23d550506659f7a33057bbbc23cb1cf0632f1 Mon Sep 17 00:00:00 2001 From: dan Date: Thu, 25 May 2023 11:00:58 -0400 Subject: refactor: split optable and stack into sep files --- stack.c | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 stack.c (limited to 'stack.c') diff --git a/stack.c b/stack.c new file mode 100644 index 0000000..80b8ed2 --- /dev/null +++ b/stack.c @@ -0,0 +1,40 @@ +#include "stack.h" + +stack* newstack() { + stack* s = (stack*)malloc(sizeof(stack)); + s->size = 0; + s->maxsize = 1024; + s->start = (stackitem*)malloc(sizeof(stackitem) * s->maxsize); + return s; +} + +stackitem pop(stack* s) { + if (s->size > 0) { + s->size = s->size - 1; + stackitem si = s->start[s->size]; + return si; + } else { + // tried to pop empty stack + return 0; + } +} + +stackitem peek(stack* s) { + if (s->size > 0) { + return s->start[s->size - 1]; + } else { + // tried to pop empty stack + return 0; + } +} + +void push(stack *s, stackitem si) { +// fprintf(stderr, "pushing %d", si); + if (s->size >= s->maxsize) { + fprintf(stderr, "Error Stack Overflow"); + exit(1); + } else { + s->start[s->size] = si; + s->size = s->size + 1; + } +} -- cgit v1.2.3