//顺序栈SqStack
#include <stdio.h>
//顺序栈最大长度50
#define MaxSize 50
typedef int ElemType;
typedef struct {
ElemType data[MaxSize]; //数据域
int top; //栈顶"指针"
}Sqstack;
//1.初始化顺序栈
void InitStack(Sqstack& S){
S.top=-1; //初始化栈顶指针-1
}
//2.判断是否栈空
bool StackEmpty(Sqstack S){
if(S.top==-1){
return true;
}
return false;
}
//3.x进栈
bool Push(Sqstack& S,ElemType x){
if(S.top==MaxSize-1){ //判断栈满
return false;
}
S.data[++S.top]=x;
return true;
}
//4.出栈
bool Pop(Sqstack& S,ElemType& x){
if(S.top==-1){ //判空
return false;
}
x=S.data[S.top--];
return true;
}
//5.读栈顶元素
bool GetTop(Sqstack S,ElemType& y){
if(S.top==-1){
return false;
}
y=S.data[S.top];
return true;
}
int main() {
Sqstack S;
//1.初始化一个空栈
InitStack(S);
//2.判断是否栈空
if(StackEmpty(S)){
printf("栈为空!\n");
}else{
printf("栈不为空!\n");
}
//3.x进栈
if(Push(S,1)){
printf("进栈成功!\n");
}else{
printf("进栈失败!\n");
}
if(Push(S,2)){
printf("进栈成功!\n");
}else{
printf("进栈失败!\n");
}
if(Push(S,3)){
printf("进栈成功!\n");
}else{
printf("进栈失败!\n");
}
//4.出栈
int x;
if(Pop(S,x)){
printf("出栈成功!出栈元素为%d\n",x);
}else{
printf("出栈失败!\n");
}
//5.读栈顶元素
int y;
if(GetTop(S,y)){
printf("栈顶元素y为%d\n",y);
}else{
printf("读栈顶元素失败!\n");
}
return 0;
}
顺序栈的基本操作-C语言实现
最新推荐文章于 2024-10-22 12:19:27 发布