//栈的操作
#include <iostream>
using namespace std;
#define stack_init_size 100
#define stackincrement 10
typedef struct aqstack
{
int *base;
int *top;
int satcksize;
}sqstack;
//栈的初始化
int StackInit(sqstack &s)
{
s.base=(int *)malloc(stack_init_size * sizeof(int));
if(!s.base) return 0;
s.top=s.base;
s.satcksize=stack_init_size;
return 1;
}
//进栈
int Push(sqstack &s, int e)
{
if(s.top-s.base>=s.satcksize)
{
cout<<"栈已满"<<endl;
return 0;
}
else
*s.top++=e;
return 1;
}
//获取栈顶元素
int GetTop(sqstack s ,int &e)
{
if(s.top==s.base)
{
cout<<"栈空!"<<endl;
return 0;
}
else
e=*(s.top -1);
return 1;
}
//出栈
int Pop(sqstack &s, int &e)
{
if(s.base==s.top)
{
cout<<"栈为空栈"<<endl;
return 0;
}
else
e=*(--s.top );
}
//判断栈是否为空
void StackEmpty(sqstack s)
{
if(s.base=s.top)
cout<<"栈为空栈!"<<endl;
}
//清空栈
void clearStack(sqstack &s)
{
s.top=s.base;
cout<<"顺序栈已被清空!";
}
int main()
{
sqstack s;
//栈的初始化
StackInit(s);
cout<<"栈初始化成功!"<<endl;
cout<<s.satcksize;
//进栈
int n;
cout<<"请输入进栈的元素(一个整数):"<<endl;
cin>>n;
Push(s,n);
cout<<"进栈成功!"<<endl;
//获取栈顶元素
int topelem=0;
GetTop(s, topelem);
cout<<"\n栈顶元素为:"<<topelem<<endl;
//出栈
int popelem=0;
Pop(s,popelem);
cout<<"出栈元素为:"<<popelem<<endl;
return 1;
}