#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#define MAXN 10000
using namespace std;
typedef struct stack
{
int data[MAXN];
int top;
}stack;
stack *init_stack()
{
stack *s=(stack *)malloc(sizeof(stack));
if(s==NULL)
{
cout<<"内存分配空间失败!"<<endl;
exit(0);
}
memset(s->data,0,sizeof(s->data));
s->top=0;
return s;
}
void pop_stack(stack *s)
{
if(s->top!=0)
{
s->data[s->top]=0;
s->top--;
}
}
void push_stack(stack *s,int data)
{
s->data[s->top]=data;//从0开始
s->top++;
}
void display_stack(stack *s)
{
//数组栈是从后往前打印
int pos=1;
for(int i=s->top-1;i>=0;i--)
cout<<"第"<<pos++<<"个元素的值为:"<<s->data[i]<<endl;
}
int main()
{
cout<<"*******************************"<<endl;
stack *s=init_stack();
cout<<"*******************************"<<endl;
cout<<"元素入栈操作!"<<endl;
push_stack(s,10);
push_stack(s,20);
push_stack(s,30);
push_stack(s,40);
cout<<"元素入栈结果:"<<endl;
display_stack(s);
cout<<"*******************************"<<endl;
cout<<"元素出栈操作!"<<endl;
pop_stack(s);
cout<<"元素出栈结果:"<<endl;
display_stack(s);
cout<<"*******************************"<<endl;
cout<<"所有操作执行完毕!"<<endl;
cout<<"*******************************"<<endl;
return 0;
}