//顺序栈
#include<iostream>
using namespace std;
//定义
typedef struct{
int stacksize;
char *top;
char *base;
}Stack;
//初始化
void InitStack(Stack &s)
{
s.base=new char[100];
if(s.base==NULL)
{
cout<<"分配失败"<<endl;
return ;
}
s.top=s.base;
s.stacksize=5;
}
//销毁
void DestorStack(Stack &s)
{
delete s.base;
}
//入栈
bool PushStack(Stack &s,char e)
{
if(s.top-s.base==s.stacksize)
return false;
*s.top++=e;
return true;
}
//出栈
char PopStack(Stack &s)
{
char e;
if(s.top==s.base)
return false;
e=*--s.top;
return e;
}
//获取栈顶
char GetTop(Stack &s)
{
if(s.top!=s.base)
return *(s.top-1);
else return -1;
}
int main(){
Stack s;
InitStack(s);
for(int i=0;i<5;i++)
{
char e;
cin>>e;
PushStack(s,e);
}
cout<<GetTop(s)<<endl;
for(int i=0;i<5;i++)
cout<<PopStack(s)<<" ";
cout<<endl;
DestorStack(s);
return 0;
}