#include"stdio.h"
#define M 1024
typedef struct
{
int data[M];
int top;
}stack;
stack A;
//A.top=0;
Initstack()//栈的初始化函数
{
A.top=0;int k,i;
printf("请输入栈的初始元素个数/n");
scanf("%d",&k);
printf("请输入栈的初始元素/n");
for(i=0;i<k;i++)
{
scanf("%d",&A.data[i]);
A.top++;
printf("已经将栈进行了初始化/n");
}
}
Checkstack()//检查顺序栈是否为空
{
int tag;
if(A.top==0)
{
tag=0;
printf("顺序栈为空/n");
}
else
{
tag=1;
printf("栈不为空/n");
}
return tag;
}
Clearstack()//将栈清空
{
if(A.top==0)
printf("该栈本身就为空,不用执行清空操作!/n");
else
A.top=0 ;
printf("已经将栈清空/n");
}
Pushstack(int x)//将x入栈
{
printf("请输入要入栈的元素:/n");
scanf("%d",&x);
A.top++;
A.data[A.top]=x;
}
Popstack(int e)//取出栈顶元素,并用e返回
{
e=A.data[A.top];
A.data[A.top]=A.data[A.top-1];
A.top=A.top-1;
printf("栈顶元素为%d/n",e);
}
Gettop(int s)//用s返回栈顶元素,不删除栈顶元素
{
if(A.top==0)
printf("栈为空/n");
else {s=A.data[A.top-1];
printf("/n栈顶元素为%d",s);}
}
Printstack()
{
int i;
i=A.top;
printf("栈中的元素为/n");
for(i+1;i>0;i--)
printf("%d",A.data[i-1]);
}
void main()
{
int x,e,s;
Initstack();
Gettop(s);
Pushstack(x);
//Printstack();
Checkstack();
Popstack(e);
Printstack();
//Gettop(s);
Checkstack();
}