#include<iostream>//栈是先进后出 LIFO last in first out
using namespace std;
#define maxsize 100
typedef struct sqstack {
int *base;
int *top;
} sqstack;
bool initstack (sqstack &s) { //栈的初始化
s.base=new int[maxsize];
if(!s.base) {
return false;
}
s.top=s.base;
return true;
}
bool push(sqstack &s,int e) {//入栈
if(s.top-s.base==maxsize)
return false;
*(s.top)=e;
s.top++;
return true;
}
bool pop(sqstack &s,int &e) { //出栈
if(s.top==s.base) {
return false;
}
e=*(--s.top);
return true;
}
int gettop(sqstack s) { //取栈顶
if(s.top!=s.base) {
return *(s.top-1);
} else
return -1;
}
int main() {
int n;
int x;
sqstack s;
initstack(s);
cout<<"请输入元素的个数"<<endl;
cin>>n;
cout<<"请依次输入n个元素依次入栈"<<endl;
while(n--) {
cin>>x;
push(s,x);
}
cout<<"元素依次出栈"<<endl;
while(s.top!=s.base) {
cout<<gettop(s)<<"\t"<<endl;
pop(s,x);
}
return 0;
}