#include <iostream>
using namespace std;
#define MaxSize 10//定义栈中元素的最大个数
typedef struct {
int data[MaxSize];//静态数组存放栈中的元素
int top;//栈顶指针
}SqStack;
void InitStack (SqStack &S){
S.top=-1;//初始化栈顶指针
}
//判断栈空
bool SqStackEmpty(SqStack S){
if(S.top==-1){
return true;
}
return false;
}
//判断栈满
bool SqStackFull(SqStack S){
if(S.top==MaxSize-1){
return true;
}
return false;
}
//读栈顶的元素
bool GetTop(SqStack S,int &x){
if(S.top==-1){
return false;
}
x=S.data[S.top];
return true;
}
//新元素入栈
bool PUsh(SqStack &s,int x){
if(s.top==MaxSize-1){
return false;
}
//s.top=s.top+1;
//s.data[s.top]=x;
s.data[++s.top]=x;
cout<<"入栈元素"<<x<<endl;
return true;
}
//出栈操作
bool Pop(SqStack &s,int &x){
if(s.top==-1){
return false;
}
// x=s.data[s.top];
// s.top=s.top-1;
x=s.data[s.top--];
return true;
}
void PrintAndPop(SqStack &s){
int x;
while(Pop(s,x)){
cout<<"出栈元素:"<<x<<" ";
}
}
int main() {
SqStack s;
InitStack(s);
if(SqStackEmpty(s)){
cout<<"顺序栈目前没有任何元素,是个空栈"<<endl;
}
else
cout<<"初始化错误,请重新初始化"<<endl;
PUsh(s,1);
PUsh(s,2);
PUsh(s,3);
PUsh(s,4);
int x;
if(GetTop(s, x)){
cout<<"栈顶元素"<<x<<endl;
}
else
cout<<"栈为空"<<endl;
PrintAndPop(s);
}
数据结构中顺序栈的实现
于 2023-09-23 18:25:23 首次发布