# include<iostream>
# include<cstdlib>
using namespace std;
# define OK 0
# define RERRO 1
# define MAXSIZE 20
# define TURE 1
# define FALSE 0
typedef int Status;
typedef int ElemType;
typedef struct
{
ElemType data[MAXSIZE];
int top;
}sqStack, * psqStack;
Status InitStack(psqStack *);
Status DestroyStack(sqStack *);
Status ClearStack(sqStack *);
Status PushStack(psqStack, ElemType);
Status PopStack(psqStack, ElemType *);
int main()
{
sqStack L;
psqStack S = &L;
ElemType e;
InitStack(&S);
for (ElemType i = 0; i < MAXSIZE; i++)
PushStack(S, i);
for (ElemType i = 0; i <= S->top; i++)
cout << S->data[i] << endl;
PopStack(S, &e);
for (ElemType i = 0; i <= S->top; i++)
cout << S->data[i] << endl;
ClearStack(S);
for (ElemType i = 0; i <= S->top; i++)
cout << S->data[i] << endl;
DestroyStack(S);
system("pause");
return 0;
}
//创建栈
Status InitStack(psqStack * S)
{
*S = (sqStack*)malloc(sizeof(sqStack));
(*S)->top = -1;
return OK;
}
//销毁栈
Status DestroyStack(sqStack * S)
{
sqStack * q;
q = S;
free(q);
q = NULL;
return OK;
}
//清空栈
Status ClearStack(sqStack * S)
{
sqStack * q = S;
for (int i = 0; i < MAXSIZE; i++)
{
q->data[i] = NULL;
}
q->top = -1;
return OK;
}
//判断栈是否为空
Status StackEmpty(sqStack S)
{
if (S.top = -1)
return TURE;
else
return FALSE;
}
//压栈
Status PushStack(psqStack S, ElemType e)
{
if (S->top >= 19)
return FALSE;
S->top++;
S->data[S->top] = e;
return OK;
}
//出栈
Status PopStack(psqStack S, ElemType *e)
{
if (S->top <= -1)
return FALSE;
*e = S->data[S->top];
S->top--;
return OK;
}