/* stack.c: implementation */ #include "stack.h" /* Private data: */ #define MAX 10 static int error = 0; /* error flag */ static int data[MAX]; /* the stack */ static int ptr; /* stack pointer */ /* Function implementation */ void stk_push(int x) { if (ptr < MAX) { data[ptr++] = x; error = 0; } else error = 1; } int stk_pop(void) { if (ptr > 0) { int x = data[--ptr]; error = 0; return x; } else { error = 1; return STK_ERROR; } } int stk_top(void) { if (ptr > 0) { error = 0; return data[ptr-1]; } else { error = 1; return STK_ERROR; } } int stk_size(void) { return ptr; } int stk_error(void) { return error; }