基本功能
初始化栈
判栈空
进栈
出栈
读取栈
代码
#include <iostream>
#include <stdlib.h>
#define MaxSize 10
using namespace std;
typedef int ElemType;
typedef struct{
ElemType data[MaxSize];
int top;
}SqStack;
void InitStack(SqStack &S);//初始化栈
bool StackEmpty(SqStack S);//判栈空
bool Push(SqStack &S,ElemType x);//进栈
bool Pop(SqStack &S,ElemType &x);//出栈
bool GetTop(SqStack S,ElemType &x);//读取栈顶元素
//初始化栈
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;
return true;
}
//出栈
bool Pop(SqStack &S,ElemType &x){
if(S.top==-1)return false;
x=S.data[S.top--];
return true;
}
//读取栈顶元素
bool GetTop(SqStack S,ElemType &x){
if(S.top==-1)return false;
x=S.data[S.top];
return true;
}
int main(){
SqStack S;
InitStack(S);
Push(S,1);
Push(S,2);
Push(S,3);
Push(S,4);
Push(S,5);
ElemType x;
if(StackEmpty(S)){
printf("栈为空\n");
} else{
printf("栈不为空\n");
}
while(GetTop(S,x)){
printf("%d ",x);
Pop(S,x);
}
printf("\n");
if(StackEmpty(S)){
printf("栈为空\n");
} else{
printf("栈不为空\n");
}
return 0;
}