#include <stdio.h>
#include <stdlib.h>
#define MaxSize 50 //define 后不需要分号
typedef int ElemType;
typedef struct{
ElemType data[MaxSize];//数组
int top;
}SqStack;
void InitStack(SqStack &S)
{
S.top=-1;//栈为空(初始化栈)
}
bool StackEmpty(SqStack S){
if(-1==S.top)
{
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 GetTop(SqStack S,ElemType &m) //改变栈顶元素 故引用
{
if(StackEmpty(S)) //嵌套函数 如果为空
{
return false;
}
m=S.data[S.top];//拿栈顶元素
return true;
}
//弹栈 对Pop改变了故引用
bool Pop(SqStack &S,ElemType &m)
{
if(StackEmpty(S))
{
return false;
}
m=S.data[S.top--];//出栈 等价m=S.data[S.top]; S.top=S.top-1;
}
int main(){
SqStack S;
InitStack(S);
bool flag;
flag=StackEmpty(S);
if(flag)
{
printf("stack is empty\n");
}
Push(S,3);
Push(S,4);
Push(S,5);
ElemType m;
flag=GetTop(S,m);//获取栈顶元素
if(flag)
{
printf("get top %d\n",m);
}
flag=Pop(S,m);//弹栈改变的是top指针 上移了一位
if(flag)
{
printf("pop element %d\n",m);
}
return 0;
}
初始化栈 入栈 出栈(C语言版)
最新推荐文章于 2024-06-17 17:45:50 发布