#include"iostream"
#include"stdlib.h"
using namespace std;
/*
此代码为栈的顺序存储实现
*/
#define MaxSize 10
typedef struct {
int data[MaxSize]; //存放栈中元素
int top; //栈顶指针
}SqStack;
//初始化栈
bool Init(SqStack &S) {
S.top = -1; //栈顶指针指向-1表示栈空
if (S.top != -1) //防止初始化失败
return false;
return true;
}
//判断栈空
bool Empty(SqStack S) {
if (S.top == -1)
return true;
return false;
}
//入栈
bool Push(SqStack &S,int x) {
if (S.top == MaxSize - 1) //栈满
return false;
S.top++;
S.data[S.top] = x;
return true;
}
//出栈,并把栈顶元素带回
bool Pop(SqStack &S,int &x) {
if (S.top == -1) //空栈
return false;
x = S.data[S.top];
S.top--;
}
//读取栈顶元素
int GetTop(SqStack S) {
if (S.top == -1)
return -1;
return S.data[S.top];
}
//销毁栈
bool Destory(SqStack &S) {
if (S.top == -1) //栈已空
return false;
S.top = -1;
return true;
}
//从顶到底依次打印栈
void Print_SqStack(SqStack S) {
cout << "当前栈中元素从顶到底:";
for (int i = S.top; i >-1; i--)
cout << S.data[i] << " ";
cout << endl;
}
int main() {
SqStack S;
int e = -1; //用于返回出栈后的栈顶元素
//初始化栈
Init(S);
Print_SqStack(S);
//判断栈空
bool res=Empty(S);
cout << res << endl;
//入栈
Push(S, 1);
Push(S, 2);
Push(S, 3);
Print_SqStack(S);
//出栈
Pop(S, e);
cout << "出栈前的栈顶元素为:" << e<<endl;
//读取栈顶元素
cout << "当前栈顶元素为:" << GetTop(S)<<endl;
//销毁栈
Destory(S);
Print_SqStack(S);
cout << endl;
system("pause");
return 0;
}
栈的顺序存储实现
于 2022-06-13 12:53:56 首次发布