c语言实现顺序栈
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100
//顺序栈的定义
typedef struct{
int *base;
int *top;
int Stacksize;
}sqstack;
//初始化
int InitStack(sqstack &S){//构造一个空栈
S.base=new int [50];
if(!S.base){
return 0;
}
S.top=S.base;
S.Stacksize=50;
return 1;
}
//入栈
int Push(sqstack &S,int e){
if(S.top-S.base==S.Stacksize){
return 0;
}
*S.top++=e; //*S.top=e S.top++
return 1;
}
//出栈
int Pop(sqstack &S,int &e){//用e返回出栈的元素
if(S.top==S.base){
return 0;
}
e=*(S.top-1);
S.top--;
return 1;
}
//取栈顶元素
int GetTop(sqstack &S, int &e){
if (S.top==S.base)
return 0;
e=*(S.top-1);
return 1;
}
//遍历
int StackTraverse(sqstack &S){
if (S.top==S.base)
return 0;
int *p=S.base;
while(p!=S.top){
printf("%5d",*p);
p++;
}
printf("\n");
}
//主函数
int main(){
//初始化栈
sqstack S;
if(InitStack(S)){
printf("顺序栈初始化成功!\n");
}
else{
printf("顺序栈初始化失败!\n");
}
//入栈
int e1;
printf("输入你想要入栈的值\n");
for(int i=1;i<6;i++) {
scanf("%d",&e1);
Push(S, e1);
}
printf("栈中元素为:");
StackTraverse(S);
//取栈顶元素
int e2;
GetTop(S, e2);
printf("栈顶元素是:%d\n",e2);
//出栈
int e3;
int j=1;
while(j!=6) {
Pop(S,e3);
printf("第%d个出栈的元素为:%d\n",j++,e3);
}
printf("栈中元素为:");
StackTraverse(S);
return 0;
}