#include #include "Stack.h" struct _Stack { int size; int top; void **storage; }; Stack stack_create(int size) { Stack p = (Stack) malloc (sizeof *p); p->size = size; p->top = 0; p->storage = (void **) malloc(size*(sizeof(void *))); return p; } void stack_destroy(Stack p) { free(p->storage); free(p); } int stack_get_size(Stack p) { return p->top; } int stack_is_empty(Stack p) { return p->top == 0; } void stack_push(Stack p, void *data) { p->storage[p->top] = data; p->top = p->top+1; } void *stack_pop(Stack p) { p->top = p->top-1; return p->storage[p->top]; } void *stack_peep(Stack p) { return p->storage[p->top-1]; }