#define MAXSTACK 10 typedef char StackEntry; typedef enum boolean { FALSE, TRUE } Boolean; typedef struct stack { int top; StackEntry entry[MAXSTACK]; } Stack; Boolean StackEmpty(Stack *s) { return s->top <= 0; } Boolean StackFull(Stack *s) { return s->top >= MAXSTACK; } void CreateStack(Stack *s) { s->top = 0; } void Push(StackEntry item, Stack *s) { if (StackFull(s)) { printf("Stack is full\n"); exit(0); } else s->entry[s->top++] = item; } void Pop(StackEntry *item, Stack *s) { if (StackEmpty(s)) { printf("Stack is empty"); exit(0); } else *item = s->entry[--s->top]; } void main() { Stack s; int x; CreateStack(&s); Push('a', &s); Push('b', &s); Push('c', &s); while (!StackEmpty(&s)) { Pop(&x, &s); printf("%c ",x); } printf("\n"); }