#include <stdio.h>
#define MaxSize 10
typedef struct{
int data[MaxSize];
int top;
}Stack;
void InitStack(Stack &); //初始化
int StackEmpty(Stack); //判断栈是否为空
bool Push(Stack & , int e); //入栈
int Pop(Stack & , int &); //出栈
int TopData(Stack , int); //读取栈顶数据
int main(void){
Stack s;
InitStack(s);
switch(StackEmpty(s)){
case 0:
printf("栈空.
");
break;
case 1:
printf("栈满.
");
break;
case 2:
printf("栈不为空且不满.
");
}
Push(s,1);
Push(s,2);
Push(s,3);
Push(s,4);
int e = 0;
printf("出栈的数据是:%d
",Pop(s,e));
printf("出栈的数据是:%d
",Pop(s,e));
printf("栈顶数据为:%d
",TopData(s,e));
return 0;
}
//初始化
void InitStack(Stack &s){
s.top = -1;
}
//判断栈是否为空
int StackEmpty(Stack s){
if(s.top = -1){
return 0;
}else if(s.top == MaxSize - 1){
s.top == MaxSize - 1;
return 1;
}else{
return 2;
}
}
//入栈
bool Push(Stack &s , int e){
if(s.top == MaxSize - 1){
printf("栈满");
return false;
}
s.data[++s.top] = e;
return true;
}
//出栈
int Pop(Stack &s , int &e){
if(s.top == -1){
printf("栈空");
return 0;
}
e = s.data[s.top--];
return e;
}
//读取栈顶数据
int TopData(Stack s , int e){
if(s.top == -1){
printf("栈空");
return 0;
}
e = s.data[s.top];
return e;
}