``` c++
#include
#include
#include
#define MAXSIZE 10
#define OWERFLOW -2
typedef struct stack
{
int *base;
int *top;
int stacksize;
}sqstack;
void Initstack(sqstack*s)
{
(*s).base=(int*)malloc(MAXSIZE);
if(!(*s).base) exit(OWERFLOW);
(*s).top=(*s).base;
(*s).stacksize=MAXSIZE;
printf("已完成初始化!\n");
}
int Emptystack(sqstack s)
{
if(s.top==s.base)
{
printf("栈空!\n");
return true;
}
else
return false;
}
int Lengthstack(sqstack s)
{
return s.top-s.base;
}
void Clearstack(sqstack s)
{
if(s.base)
s.top=s.base;
printf("栈已清空!\n");
}
void Destroystack(sqstack *s)
{
if((*s).base)
{
free ((*s).base);
(*s).stacksize=0;
(*s).base=(*s).top;
}
printf("栈已销毁!\n");
}
void push(sqstack*s,int e)
{
if((*s).top-(*s).base==(*s).stacksize)
{
printf("栈满!\n");
}
else
{
(*s).top++;
*(*s).top=e;
}
}
void pop(sqstack *s,int *e)
{
if((*s).top==(*s).base)
{
printf("栈空!\n");
}
else
{
(*e)=*(*s).top;
(*s).top--;
}
}
void print(sqstack s)
{
int i=0;
printf("元素:");
int*p=s.base+1;
for(i=0;i