#include <iostream>
#include <cstdlib>
#define MAX 100
using namespace std;
//定义栈结构体
typedef struct node
{
int data[MAX];
int top;
}Sqstack;
//初始化栈
void Init(Sqstack * &s)
{
s=(Sqstack *)malloc(sizeof(Sqstack));
s->top=-1;
}
//销毁栈
void Destroy(Sqstack * &s)
{
free(s);
}
//判断空栈
void Is_empty(Sqstack * &s)
{
if(s->top==-1) cout<<"该栈为空"<<endl;
else cout<<"该栈非空"<<endl;
}
//进栈
void Push(Sqstack * &s,int e)
{
if(s->top==MAX-1)
{
cout<<"栈已满"<<endl;
return ;
}
s->data[++s->top]=e;
cout<<"元素"<<e<<"进栈"<<endl;
}
//出栈
void Pop(Sqstack * &s)
{
if(s->top==-1)
{
cout<<"空栈"<<endl;
return ;
}
int e=s->data[s->top--];
cout<<"栈顶元素"<<e<<"出栈"<<endl;
}
//取栈顶元素
void Get_top(Sqstack * &s)
{
if(s->top==-1)
{
cout<<"空栈"<<endl;
return ;
}
cout<<"栈顶元素为:"<<s->data[s->top]<<endl;
}
//遍历栈
void Display(Sqstack * &s)
{
if(s->top==-1)
{
cout<<"空栈"<<endl;
return ;
}
int t=s->top;
while(t>=0)
cout<<s->data[t--]<<endl;
}
int main()
{
Sqstack *s;
int choose,ans;
Init(* &s);
cout<<"1.进栈 2.出栈"<<endl;
cout<<"3.判断空栈 4.取栈顶元素"<<endl;
cout<<"5.遍历栈的元素"<<endl;
cin>>choose;
while(choose)
{
switch(choose)
{
case 1:cout<<"输入进栈元素"<<endl;
cin>>ans;
Push(* &s,ans);
break;
case 2:Pop(* &s);break;
case 3:Is_empty(* &s);break;
case 4:Get_top(* &s);break;
case 5:Display(* &s);
}
cin>>choose;
}
Destroy(* &s);
return 0;
}
栈的简单操作(顺序结构存储)
最新推荐文章于 2020-06-29 00:17:39 发布