#define _CRT_SECURE_NO_WARNINGS//必须要放在第一行
#include<stdio.h>
#define MaxSize 10
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.top = S.top + 1; //指针先加1
S.data[S.top] = x; //新元素入栈
//S.data[++S.top] = x; 也可以写成这种形式
return true;
}
//出栈
bool Pop(SqStack& S, ElemType& x) {
if (StackEmpty(S))
return false;
x = S.data[S.top];
S.top = S.top - 1; //栈顶指针再减一
//x = S.data[S.top--]; 可以这样写
return true;
}
//读栈顶元素
bool GetTop(SqStack S, ElemType& x) {
if (StackEmpty(S))
return false;
x = S.data[S.top];
return true;
}
int main() {
SqStack S; //声明一个顺序栈(分配空间)
bool flag;
ElemType x; //存储拿出来的栈顶元素
InitStack(S);
if (flag = StackEmpty(S))
printf("栈是空的\n");
Push(S, 3); Push(S, 4); Push(S, 5);
flag = GetTop(S, x); //获取栈顶元素,但是S.top值不变
if (flag)
printf("获取栈顶元素为%d\n", x);
flag = Pop(S, x); //弹出栈顶元素
if (flag)
printf("弹出元素为%d\n",x);
return 0;
}
顺序栈--增删查
于 2022-05-07 11:04:49 首次发布