//数组实现栈
#include<stdio.h>
#include<stdlib.h>
#define MaxSize 50
typedef int ElemType;
typedef struct{
ElemType 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,ElemType x){
//判断栈是否满
if(S.top == MaxSize - 1){//数组的大小不能改变,避免访问越界
return false;
}
S.data[++S.top] = x;//等价于S.top=S.top+1; S.data[S.top]=x;
return true;
}
//出栈
bool Pop(SqStack &S,ElemType &x){
if(-1 == S.top){
return false;
}
x=S.data[S.top--];//出栈后减减,x=S.data[S.top]; S.top = S.top-1;
return true;
}
//读取栈顶元素
bool GetTop(SqStack S,ElemType &m){
/*if(-1 == S.top){ //说明栈为空
return false;
}*/
if(StackEmpty(S))
{
return false;
}
m = S.data[S.top]; //得到栈顶元素
return true;
}
int main(){
SqStack S;//先进先出 FIL0 LIFO
bool flag;
ElemType m;//用来存放拿出的元素
InitStack(S);//初始化
flag = StackEmpty(S);
if(flag){
printf("stack is Empty!\n");
}
Push(S,3);//入栈元素3
Push(S,4);//入栈元素4
Push(S,5);
flag = GetTop(S,m);//获取栈顶元素
if(flag){
printf("Get top %d\n",m);
}
flag=Pop(S,m);//弹出栈顶元素
if(flag)
{
printf("pop element is %d\n",m);
}
return 0;
}
C学习笔记|初始化栈/入栈/出栈/读取操作
最新推荐文章于 2024-07-25 11:43:17 发布