/* StackAsArray.c Author: W. M. Farmer Revised: January 27, 2007 Description: A stack module implemented as an array. */ #include #define MAX 1000 /* Module variables */ static int stack[MAX]; /* Stack as array. */ static int height = 0; /* Height of stack. */ /* Selectors */ int stack_top() { if (height != 0) return stack[height - 1]; else { printf("Error in stack_top(): Stack is empty.\n"); return 0; } } int stack_height() { return height; } /* Mutators */ void stack_push(int element) { if (height != MAX) { stack[height] = element; height = height + 1; } else printf("Error in stack_push(%d): Stack is full.\n", element); } void stack_pop() { if (height != 0) height = height - 1; else printf("Error in stack_pop(): Stack is empty.\n"); } /* Print procedure */ void stack_print() { int i; printf("Stack contents: ["); for (i = 0; i < height; i++) { if (i + 1 == height) printf("%d", stack[i]); else printf("%d,", stack[i]); } printf("].\n"); }