c
#include<stdio.h>
#define MaxSize 10
//栈的所有操作时间复杂度都是O(1)
//定义
typedef struct{
int data[MaxSize];
int top; //栈顶指针,永远指向栈顶元素
}SqStack;
//初始化,使栈顶指针指向-1
void InitStack(SqStack &S){
S.top=-1;
}
//判断栈空
bool StackEmpty(SqStack S){
if(S.top==-1)
return true;
else
return false;
}
//判断栈满
bool StackFull(SqStack S){
if(S.top==MaxSize-1)
return true;
else
return false;
}
//入栈,先判断栈满
bool Push(SqStack &S,int x){
if(S.top==MaxSize-1) //判断栈满
return false;
S.top++;
S.data[S.top]=x;
printf("%d入栈成功\n",x);
return true;
}
//出栈,先判断栈空
bool Pop(SqStack &S,int &x){
if(S.top==-1)
return false;
x=S.data[S.top];
S.top--;
printf("%d出栈成功\n",x);
return true;
}
//读取栈顶元素
bool GetTop(SqStack S,int &x){
if(S.top==-1)
return false;
x=S.data[S.top];
printf("栈顶元素是%d\n",x);
return true;
}
int main(){
SqStack S; //定义
InitStack(S); //初始化
Push(S,1); //入栈
Push(S,2);
int x;
GetTop(S,x); //读栈顶元素
Pop(S,x); //出栈
GetTop(S,x);
}