#define _CRT_SECURE_NO_WARNINGS
#include
#define MaxSize 50
typedef struct//定义结构体,数据结构:栈
{
int data[MaxSize];
int top;
}Stack;
bool Inits(Stack &s)//初始化栈,默认栈顶为-1,可以存50个元素。
//如果MaxSize是50,那么他的数组空间就是0-49
{
s.top = -1;
return true;
}
bool empty(Stack s)//判断栈空如果是返回1
{
if (s.top == -1)
{
return true;
}
else
{
return false;
}
}
bool Enstack(Stack& s,int e)//入栈
{
if (s.top != MaxSize-1)//栈未满可以入栈
{
s.data[++s.top] = e;//让栈顶指向新元素,栈顶++
return true;
}
else
{
return false;
}
}
bool destack(Stack& s, int &e)//出栈
{
if (s.top != -1)
{
return false;
}
else
{
e = s.data[s.top--];//把值给e然后栈顶指针向下移动一个
}
}
bool Prints(Stack s)//打印栈中元素
{
if (!empty(s))//函数中可以引用其他函数
{
printf("%dn", s.data[s.top]);
s.top--;
}
return true;
}
bool Gets(Stack s,int &e)//得到栈内元素并把他赋值给e
{
if (s.top == -1)//说明栈空,没有元素你去哪取去???
{
return false;
}
else {
e=s.data[s.top];//取成功,给主函数个答复
return true;
}
}
int main()
{
Stack s;
Inits(s);
int x;
scanf("%d", &x);
Enstack(s, x);
Prints(s);
Gets(s,x);
printf("%d", x);
}



