栈及其初级应用

#include<iostream>
#include<fstream>
using namespace std;
#define OK 1
#define ERROR 0
#define OVERFLOW -2
typedef int Status; //Status 是函数返回值类型,其值是函数结果状态代码。
typedef char SElemType; //ElemType 为可定义的数据类型,此设为int类型
#define MAXSIZE 100 //顺序表可能达到的最大长度
typedef struct{
SElemType *base;
    SElemType *top;
int stacksize;
}SqStack;
Status InitStack(SqStack &S)
{
S.base =new SElemType[MAXSIZE];
if( !S.base ) return OVERFLOW;
S.top = S.base;
S.stacksize = MAXSIZE;
return OK;
}
Status Push(SqStack &S,SElemType e)  
{
if(S.top - S.base==S.stacksize) // 栈满
        return ERROR;
*S.top++=e;
return OK;
}
Status Pop(SqStack &S, SElemType &e)  
{
if( S.top == S.base ) // 栈空
        return ERROR;
e= *--S.top;
return OK;
}
Status GetTop(SqStack S,SElemType &e)  
{
if( S.top == S.base ) return ERROR; // 栈空
e=*(S.top-1);
return OK;
}


int main()
{
{
SqStack S;
int choose;
char ch;
cout<<"1. 建立\n";
cout<<"2. 入栈\n";
cout<<"3. 取值\n";
cout<<"4. 出栈\n";
cout<<"0. 退出\n";
choose=-1;
while(choose!=0)
{
cout<<"请选择:";
cin>>choose;
switch(choose)
{
case 1:
              if(InitStack(S))         
  cout<<"成功";
 else
               cout<<"建立失败";
break;
case 2:
{
  fstream file;
file.open("e:\\stack.txt");
if(!file)
{
cout<<"打开失败";
   exit(ERROR);
}
while(!file.eof())
{
file>>ch;
if(file.fail())
break;
if(Push(S,ch))
cout<<ch<<"入栈成功";
}
}
break;
case 3:
if(GetTop(S,ch))
cout<<"取值的元素:"<<ch;
break;
case 4:
  if(Pop(S,ch))
  cout<<"出栈成功:"<<ch;
  break;

}
}
return 0;
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值