#include<iostream>
#include<stdio.h>

#define MAXSIZE 50
typedef struct 
{
    int data[MAXSIZE];
    int top;
 }  SqStack;
 
// 初始化栈 
 void InitStack(SqStack &s)
{
    s.top=-1;
}
//判断栈空
bool StackEmpty(SqStack &s)
{
    if(s.top==-1)
    {
        return true;
     } 
     else
     {
         return false;
     }
 } 
 
//入栈 
 bool Push(SqStack &s,int x)
 {
     if(s.top==MAXSIZE-1)
     {
         return false;
    }
    s.data[++s.top]=x;//先加1 然后再入栈 
    return false;
 }
 //出栈 
 bool pop(SqStack &s,int &x)
 {
     if(s.top==-1)
     {
         return false;
    }
     x=s.data[s.top--];//先出栈 然后指针再减1 
     return false;
     
 }
 
 
 //获得栈顶元素 
 bool GetTop(SqStack &s,int &x)
{
    if(s.top==-1) return false;
    x=s.data[s.top];
    return true;
    
}
 

int main()
{
    SqStack stack;
    InitStack(stack);
    int number[]={1,2,3,4,5};
    for(int i=0;i<5;i++)
    {
        Push(stack,number[i]);
        
    }
    int n;    
    for(int i=0;i<5;i++)
    {
    pop(stack,n);
    printf("%d\n" ,n);
    }     
 }