#include <bits/stdc++.h>
#define maxsize 100
using namespace std;
typedef struct node
{
int data[maxsize];
int top;//有一个指针top来记录栈里数据的总数
}no,*lstack;
lstack initstack(lstack p)//之所以用结构体指针来定义函数只是因为比较方便,
{ //因为栈内要有一个指向栈顶的指针,所以用结构体指针去定义这个函数
p=new no;//用结构体指针定义了一个指针,方便操作
p->top=-1;
return p;
}
void instack(lstack p,int x)//这里的x已经有了下面的放入p->data的操作,
{ //所以操作完就可以释放掉了。因此括号里的x前面不用加&符号
if(p->top==maxsize-1)//这是栈满的标志
{
printf("栈已满!");
return;
}
else
p->data[++(p->top)]=x;
}
int pop(lstack p)
{
if(p->top==-1)
{
printf("栈为空!");
return -1;
}
else
return (p->data[(p->top)--]);
}
int main()
{
lstack s;//设置一个名为s的栈
s=initstack(s);
int n,x,a[maxsize];
printf("输入要放入栈的总数:");
cin>>n;
printf("请输入数据:");
for(int i=0;i<n;i++)
{
cin>>x;
a[i]=x;
instack(s,a[i]);
}
for(int j=0;j<n;j++)
{
printf("%d ",pop(s));
}
printf("\n");
//cout << "Hello world!" << endl;
return 0;
}