What am I doing wrong, stack?
Hey all. What am I doing wrong with this program? It won't print my list of numbers at all.
#include <stdlib.h>
#include <stdio.h>
#include <ctype.h>
#define MAXSTACK 10
typedef enum boolean {FALSE, TRUE} Boolean;
void Error (char *);
typedef char StackEntry;
typedef struct stack
{
int top;
StackEntry entry[11];
}Stack;
void Print (StackEntry);
Boolean StackEmpty(Stack * stack);
Boolean StackFull(Stack * stack);
void CreateStack(Stack * stack);
void TraverseStack ( Stack * stack, void(*Visit) ());
void Pop (StackEntry *item, Stack * stack);
void Push (StackEntry item, Stack * stack);
int main(void)
{
StackEntry x;
Stack s1, s2;
CreateStack(&s1);
CreateStack(&s2);
printf("\nEnter data: ");
while( (x=getchar()) != '\n' && ! StackFull(&s1))
Push(x, &s1);
printf("\nThe Stack is: ");
TraverseStack(&s1, Print);
while( ! StackEmpty(&s1))
{
Pop(&x, &s1);
Push(x, &s2);
}
printf("\nThe reverse stack is: ");
TraverseStack(&s2, Print);
return 0;
}
Boolean StackFull(Stack * stack)
{
return stack->top=MAXSTACK;
}
Boolean StackEmpty(Stack * stack)
{
return stack->top<=0;
}
void CreateStack(Stack * stack)
{
stack->top=0;
}
void TraverseStack( Stack * stack, void(*Visit) ())
{
int counter;
for(counter=0;counter<stack->top;counter++);
(*Visit) (stack->entry[counter]);
}
void Print(char x)
{
printf("%c ",x);
}
void Push (StackEntry item, Stack * stack)
{
if(StackFull(stack))
Error("\nStack is Full");
else
{ stack->entry[stack->top]=item;
stack->top++;
}
}
void Pop (StackEntry *item, Stack *stack)
{
if(StackEmpty(stack))
Error("\nStack is Empty");
else
{
*item=stack->entry[--stack->top];
}
}
void Error (char *message)
{
fprintf(stderr, "\nERROR: &s\n", message);
exit (1);
}