顺序栈的操作包括初始化,判断为空,进栈,出栈,获取栈顶元素的值等:
#include<stdio.h>
#include<stdlib.h>
#define MaxSize 50
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.data[++S.top] =x;
return true;
}
bool Pop(SqStack &S,ElemType &x){//出栈
if(S.top=-1)
return false;
x=S.data[S.top--];
return true;
}
bool GetTop(SqStack S,ElemType &x){
if(S.top==-1)
return false;
x=S.data[S.top];
return true;
}
int main(){
SqStack S;
int a[5]={1,2,3,4,5};
int temp;
InitStack(S);
for(int i=0;i<(sizeof(a)/sizeof(a[0]));i++){
Push(S,a[i]);
GetTop(S,temp);
printf("栈的第%d个值为%d\n",(i+1),temp);
}
return 0;
}