数据结构----3、栈详细代码——菜鸟编写,易懂,可直接运行

#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;
 } 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值