#include<iostream>
#define MAXSIZE 100
using namespace std;
typedef struct astack
{
int* top;
int * base;
int stacksize;
}Astack;
void stackinit(Astack &a1)
{
a1.base=new int [MAXSIZE];
a1.top=a1.base;
a1.stacksize=MAXSIZE;
}
void putin(Astack &a1,int n)//入栈函数
{
if(a1.top-a1.base==a1.stacksize)//判断是否栈满
{
cout<<"栈满"<<endl;
}
*a1.top=n;
a1.top++;
}
void stackempty(Astack a1)
{
if(a1.base==a1.top)
{
cout<<"栈空"<<endl;
}
else
{
cout<<"栈非空"<<endl;
}
}
void stackfull(Astack a1)
{
if(a1.top-a1.base==a1.stacksize)
{
cout<<"栈满"<<endl;
}
else
{
cout<<"栈非满"<<endl;
}
}
void putout(Astack &S,int &n)
{
if(S.top==S.base)
{
cout<<"栈空 不能出栈"<<endl;
}
S.top--;
n=*S.top;
}
int main()
{
Astack a2;
int x;
stackinit(a2);
cout<<"请输入想要输入到栈中值的个数"<<endl;
cin>>x;
cout<<"请输入栈的值"<<endl;
for(int i=0;i<x;i++)
{
int n;
cin>>n;
putin(a2,n);
}
stackempty(a2);
stackfull(a2);
int e,j=1;
while(a2.top!=a2.base)
{
putout(a2,e);
printf("第%d个出栈的是%d\n",j++,e);
}
return 0;
}