#include "stdio.h"
#define MAXLEN 100
typedef int DataType;
typedef struct
{ DataType data[MAXLEN];
int top;
}SeqStack;
void InitStack(SeqStack *S)//初始化函数
{
S->top=-1;//初始化的顺序栈为空
}
int EmptyStack(SeqStack *S)//判断栈空函数
{
if(S->top==-1)//栈为空
return 1;
else
return 0;
}
int FullStack(SeqStack *S)//判断栈满函数
{
if(S->top==MAXLEN-1)//栈为满
return 1;
else
return 0;
}
int Push(SeqStack *S,DataType x)//进栈操作函数
{
if(FullStack(S))//调用FullStack(s),判断栈是否为满
{
printf("栈满,不能近栈!");
return 0;//栈满,不能近栈
}
else
{
S->top++;
S->data[S->top]=x;
return 1;
}
}
int Pop(SeqStack *S,DataType *x)//出栈操作函数
{
if(EmptyStack(S))//调用判空函数EmptyStack(s),判断栈是否为空
{
printf("栈空,取栈顶元素失败!");
return 0;//栈满,不能出栈
}
else//栈不为空
{
*x=S->data[S->top];
S->top--;
return 1;
}
}
int GetTop(SeqStack *S,DataType *x)//取栈顶元素函数
{
if(EmptyStack(S))//调用判空函数EmptyStack(s),判断栈是否为空
{
printf("栈空,取栈顶元素失败!");
return 0;//栈满,不能出栈
}
else//栈不为空
{
*x=S->data[S->top];
return 1;
}
}
void Menu()
{
printf("n 顺序栈的各种操作");
printf("n==================================================");
printf("n| 1——初始化栈 |");
printf("n| 2——入栈操作 |");
printf("n| 3——出栈操作 |");
printf("n| 4——求栈顶元素 |");
printf("n| 0——返回 |");
printf("n==================================================");
printf("n请输入菜单号(0-4):");
}
main()
{
int i,n,flag;
SeqStack S;
DataType x;
char ch1,ch2,a;
ch1='y';
while(ch1=='y'||ch1=='Y')
{ Menu();
scanf("%c",&ch2);
getchar();
switch(ch2)
{
case '1':
InitStack(&S);
printf("栈的初始化完成!");
break;
case '2':
printf("请输入要入栈的元素个数:");
scanf("%d",&n);
printf("请输入%d个入栈的整数:",n);
for(i=0;i
二、程序运行结果



