/********************************************************* * From C PROGRAMMING: A MODERN APPROACH, Second Edition * * By K. N. King * * Copyright (c) 2008, 1996 W. W. Norton & Company, Inc. * * All rights reserved. * * This program may be freely distributed for class use, * * provided that this copyright notice is retained. * *********************************************************/ /* stack1.c (Chapter 19, page 488) */ #include #include #include "stack.h" #define STACK_SIZE 100 static int contents[STACK_SIZE]; static int top = 0; static void terminate(const char *message) { printf("%s\n", message); exit(EXIT_FAILURE); } void make_empty(void) { top = 0; } bool is_empty(void) { return top == 0; } bool is_full(void) { return top == STACK_SIZE; } void push(int i) { if (is_full()) terminate("Error in push: stack is full."); contents[top++] = i; } int pop(void) { if (is_empty()) terminate("Error in pop: stack is empty."); return contents[--top]; }