Data Structure Algorithm C

#include 
#include 
#define SIZE 50
void push(int i);
int pop(void);
int  *tos, *p1, stack[SIZE];
int main(void)
{
  int value;
  tos = stack; /* tos points to the top of stack */
  p1 = stack; /* initialize p1 */
  do {
    printf("Enter value: ");
    scanf("%d", &value);
    if(value != 0) push(value);
    else printf("value on top is %d\n", pop());
  } while(value != -1);
  return 0;
}
void push(int i)
{
  p1++;
  if(p1 == (tos+SIZE)) {
    printf("Stack Overflow.\n");
    exit(1);
  }
  *p1 = i;
}
int pop(void)
{
  if(p1 == tos) {
    printf("Stack Underflow.\n");
    exit(1);
  }
  p1--;
  return *(p1+1);
}