#include<bits/stdc++.h>
using namespace std;
#define MAXSIZE 100
#define status int
typedef struct{
int *base;
int *top;
int stacksize;
}SqStack;
status InitStack(SqStack &s)
{
s.base = new int[MAXSIZE];
int a;//cout<<sizeof(a)<<endl;
if(!s.base)
return 0;
s.top = s.base;
s.stacksize = MAXSIZE;
return 1;
}
bool StackEmpty(SqStack s)
{
if(s.top == s.base)
return true;
return false;
}
status StackLength(SqStack s)
{
return s.top-s.base;
}
status ClearStack(SqStack &s)
{
if(s.base)
s.top = s.base;
return 1;
}
status DestroyStack(SqStack &s)
{
if(s.base)
{
delete s.base;
s.stacksize = 0;
s.base = s.top = NULL;
}
return 1;
}
status Push(SqStack &s,status e)
{
if(s.top-s.base == s.stacksize)
return 0;
*s.top++=e;
return 1;
}
status Pop(SqStack &s,status &e)
{
if(s.top == s.base)
return 0;
e = *--s.top;
return 1;
}
void menu()
{
cout<<"1、初始化"<<endl<<"2、入栈"<<endl<<"3、出栈"<<endl<<"4、判断栈空"<<endl<<"5、返回栈长"<<endl<<"6、清空栈"<<endl<<"7、销毁栈"<<endl<<"8、退出"<<endl;
}
int main()
{
menu();
SqStack sta;
while(1)
{
int n;
cin>>n;
switch(n)
{
case 1:
InitStack(sta);
break;
case 2:
int x;
cin>>x;
Push(sta,x) ;
break;
case 3:
int y;
Pop(sta,y);
cout<<y<<endl;
break;
case 4:
if(StackEmpty(sta))
cout<<"栈空"<<endl;
else
cout<<"栈非空"<<endl;
break;
case 5:
cout<<StackLength(sta)<<endl;
break;
case 6:
ClearStack(sta);
break;
case 7 :
DestroyStack(sta);
break;
case 8:
exit(0);
}
}
return 0;
}
数据结构----3、栈详细代码——菜鸟编写,易懂,可直接运行
最新推荐文章于 2024-07-10 11:22:29 发布