#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;
return true;
}
//出栈
bool Pop(SqStack &S,int &x){
if(S.top==-1)
return false;
x=S.data[S.top--];
return true;
}
//读栈顶元素
bool GetTop(SqStack S,int &x){
if(S.top==-1)
return false;
x=S.data[S.top];
return true;
}
//打印栈
bool PrintStack(SqStack S){
if(StackEmpty(S))
return false;
for(int i=0;i<=S.top;i++)
printf("%d ",S.data[i]);
}
int main(){
SqStack S;
int x;
InitStack(S);
Push(S,1);
printf("加入1\n");
Push(S,2);
printf("加入2\n");
Pop(S,x);
printf("弹出%d\n",x);
Push(S,3);
printf("加入3\n");
printf("栈是否为空:%d\n",StackEmpty(S));
GetTop(S,x);
printf("当前栈顶元素:%d\n",x);
PrintStack(S);
}
运行结果:
加入1
加入2
弹出2
加入3
栈是否为空:0
当前栈顶元素:3
1 3