#include
#define MAX 100
//順序棧的定義
typedef struct{
int *base;
int *top;
int stacksize;
}SqStack;
//初始化
int InitStack(SqStack &S){
S.base=new int[MAX];
if(!S.base){
return 0;
}
S.base=S.top;
S.stacksize=MAX;
return 1;
}
//入棧
int Push_S(SqStack &S,int e){
//將元素e入棧
if(S.top-S.base==S.stacksize){//判斷棧是否滿
return 0;
}
S.top++=e;
//S.top+=1;
return 1;
}
//出棧
int Pop_S(SqStack &S,int &e){
//用e返回出棧的元素
if(S.top==S.base){//棧空
return 0;
}
e=--S.top;
return 1;
}
int main(){
SqStack S;
if(InitStack(S)){
printf("順序棧初始化成功!\n");
}else{
printf("順序棧初始化失敗!\n");
}
printf("請輸入入棧元素:");
int e1;
scanf("%d",&e1);
if(Push_S(S,e1)){
printf("入棧成功!\n");
}else{
printf("入棧失敗!\n");
}
}
S.base=S.top;
寫反了
S.top=S.base;