#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#define MAX 100
typedef struct{
int data[MAX];
int top;
}Stack;
Stack s;
//初始化 成功1
int InitStack(Stack s){
s.top=-1;
return 1;
}
//判空 非空1
int StackEmpty(Stack s){
if(-1==s.top)
return 0;
return 1;
}
//判满 未满1
int StackFull(Stack s){
if(MAX-1==s.top)
return 0;
return 1;
}
//求长度 成功1输出长度
int StackLength(Stack s){
printf("长度为%d",s.top+1);
return 1;
}
//访问栈顶 返回1输出元素
int GetTop(Stack s,int *e){
e=s.data;
printf("栈顶元素为%d",*e);
return 1;
}
//入栈 成功1
int Push(Stack s,int e){
++s.top;
s.data[s.top]=e;
printf("入栈成功!
");
return 0;
}
//出栈 成功1
int Pop(Stack s,int *e){
*e=s.data[s.top];
s.top--;
return 1;
}
int main(){
int i,E,*e1,*e2;
Stack L;
printf("现在开始进行站的操作!
");
if(1!=InitStack(L)){
printf("初始化失败,按任意键退出!
");
getch();
exit(0);
}
if(1!=StackEmpty(L)){
printf("栈的空间为空!
");
exit(0);
}
printf("是否进行入栈操作?1-是");
scanf("%d",&i);
if(1==i){
loop:
printf("请输入你要入栈的元素:");
scanf("%d",&E);
if(1!=StackFull(L)){
printf("栈空间已满!
");
printf("是否进行出栈操作1或者访问栈顶操作2?
");
printf("请输入你的选择:");
scanf("%d",&i);
if(i==1)
goto pop;
else if(i==2)
goto gettop;
else{
printf("操作失败,按任意键退出!
");
getch();
exit(0);
}
}
else{
Push(L,E);
printf("是否继续入栈?1-是");
scanf("%d",&i);
if(i==1)
goto loop;
}
}
else{
printf("是否进行出栈操作1或者访问栈顶操作2?
");
printf("请输入你的选择:");
scanf("%d",&i);
if(i==1)
goto pop;
else if(i==2)
goto gettop;
else{
printf("操作失败,按任意键退出!
");
getch();
exit(0);
}
}
pop:
Pop(L,e1);
printf("是否继续进行出栈操作?1是");
scanf("%d",&i);
if(1==i)
goto pop;
gettop:
GetTop(L,e2);
printf("顺序栈的操作已经结束!");
return 0;
}