```cpp
#include<stdio.h>
#include<stdlib.h>
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2
#define maxsize 100
#define NULL 0
typedef int elemtype;
typedef struct{
elemtype *base;
int *top;
int stacksize;
}sqstack;
int initstack(sqstack &S) //初始化栈
{
S.base=new int[maxsize];
if(!S.base)
exit(OVERFLOW);
S.top=S.base;
S.stacksize=maxsize;
return OK;
}
int push(sqstack &S,elemtype e) //入栈
{
if(S.top-S.base==S.stacksize) return ERROR;
*S.top++=e;
return OK;
}
int pop(sqstack &S,elemtype &e) //弹出栈顶元素
{
if(S.top==S.base) return ERROR;
e=*--S.top;
return OK;
}
int gettop(sqstack S) //返回栈定元素
{
if(S.top!=S.base)
return *(S.top);
}
void outstack(sqstack S) // 遍历
{
int i=0;
sqstack p;
p.top=S.top;
if(S.top==S.base)
printf("stack is empty!\n");
while(p.top!=S.base)
{
printf("the stacktop %d element data :%d\n",++i,*(p.top-1));
p.top--;
}
} //outstack
void setempty(sqstack &p)
{
p.top=p.base;
}
int main()
{
sqstack q;
int y,cord;
elemtype a,b;
initstack(q);
printf("please input element number:\n");
int i,n=10,x;
for(i=0;i<n;++i)
*q.top++=i+1;
do
{
printf("\n 1 initiate sqstack \n");
printf("\n 2 push a element \n");
printf("\n 3 pop a element \n");
printf("\n 4 gettop element \n");
printf("\n 5 set empty sqstack \n");
printf("\n 0 exit \n");
printf("please input your choose (0-5)-->\n");
scanf("%d",&cord);
printf("\n");
switch(cord)
{
case 1:
{
system("cls");
initstack(q);
printf("please input element number:\n");
int i,n,x;
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("please input %d elem\n",i);
scanf("%d",&x);
*q.top ++=x;
}
outstack(q);
} break;
case 2:
{
system("cls");
printf("please input a number to push:\n");
int i;
scanf("%d",&i);
push(q,i);
outstack(q);
} break;
case 3:
{
system("cls");
printf("pop stack top\n");
int j;
b=pop(q,j);
if(b)
printf("top is %d\n",j);
outstack(q);
} break;
case 4:
{
system("cls");
b=gettop(q);
if(b)
printf("stacktop elemt is %d",b);
outstack(q);
} break;
case 5:
{
system("cls");
setempty(q);
printf("the sqstack be seted empty\n");
outstack(q);
} break;
case 0: exit(0);
}
} while(cord<=5);
}