首先,顺序栈是一个顺序表(由数组构建的线性表)
栈结构的特性是只在栈顶top增加或者删除
所以把数组的开头作为栈底,末尾作为栈底
代码如下:
#define MaxSize 50
#include<bits/stdc++.h>
using namespace std;
typedef struct{
int data[MaxSize];
int top;
}SqStack;//Sq = Sequence 顺序
//初始化
void init(SqStack &S){
S.top = -1;
}
//判空
bool isVacant(SqStack S){
if(S.top == -1)
return true;
else
return false;
}
//入栈
bool push(SqStack &S, int x){
if(S.top == MaxSize - 1)
return false;
else
S.data[++S.top] = x;
return true;
}
//出栈,x要加引用的原因是这货是bool
bool pop(SqStack &S, int &x){
if(S.top == -1)
return false;
else
x = S.data[S.top--];
return true;
}
//读栈顶
bool getTop(SqStack &S, int &x){
if(S.top == -1)
return false;
else
x = S.data[S.top];
return true;
}
int main(){
SqStack S;
int x;
init(S);
for(int i = 0; i < 10; i++){
push(S, i);
}
for(int i = 0; i < 10; i++){
if(pop(S, x))
cout<<x<<" ";
}
}