#include <stdio.h>
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
#define MAXSIZE 16
typedef int State;
typedef int SElemType;
typedef struct SqStack
{
SElemType data[MAXSIZE];
int top;
}SqStack;
State initStack(SqStack *S);
State destroyStack(SqStack *S);
State pushStack(SqStack *S, int e);
State popStack(SqStack *S, int *e);
State printStack(SqStack *S);
State initStack(SqStack *S)
{
S->top = -1;
return OK;
}
State pushStack(SqStack *S, int e)
{
if (S->top == MAXSIZE - 1)
{
return ERROR;
}
S->data[++(S->top)] = e;
return OK;
}
State popStack(SqStack *S, int *e)
{
if (S->top == -1)
{
return ERROR;
}
*e = S->data[(S->top)--];
return OK;
}
State printStack(SqStack *S)
{
for (int i = S->top; i > -1; i--)
{
printf("%d ", S->data[i]);
}
return OK;
}
int main(void)
{
SqStack s;
int e;
initStack(&s);
pushStack(&s, 1);
pushStack(&s, 2);
pushStack(&s, 3);
popStack(&s, &e);
pushStack(&s, 4);
printStack(&s);
printf("曾经弹栈了%d\n", e);
return 0;
}