数据结构实验之栈三:后缀式求值
来源:互联网 发布:mac键盘坏了怎么办 编辑:程序博客网 时间:2024/05/23 01:58
数据结构实验之栈三:后缀式求值
Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^
题目描述
对于一个基于二元运算符的后缀表示式(基本操作数都是一位正整数),求其代表的算术表达式的值。
输入
输入一个算术表达式的后缀式字符串,以‘#’作为结束标志。
输出
求该后缀式所对应的算术表达式的值,并输出之。
示例输入
59*684/-3*+#
示例输出
57
提示
基本操作数都是一位正整数!
#include<iostream>#include<cstdlib>#include<string>#define STACK_INIT_SIZE 100 //存储空间初始分配量#define STACKINCREMENT 10 //存储空间分配增量using namespace std;typedef struct{ int *base; //在栈构造之前和销毁之后,base的值为NULL int *top; //栈顶指针 int stacksize;//当前已分配的存储空间,以元素为单位}SqStack;SqStack S;int InitStack(SqStack &s)//构造一个空栈{ s.base=(int *)malloc(STACK_INIT_SIZE*sizeof(int )); if(!s.base) //存储分配失败 exit(0); s.top=s.base; s.stacksize = STACK_INIT_SIZE; return 1;}int Push(SqStack &s,int e)//压栈,插入元素e为新的栈顶元素{ if(s.top-s.base>s.stacksize) //栈满,追加存储空间 { s.base=(int *)realloc(s.base,(s.stacksize+STACKINCREMENT)*sizeof(int )); if(!s.base)//存储分配失败 exit(0); s.top=s.base+s.stacksize; s.stacksize+=STACKINCREMENT; } *s.top++=e; return 1;}int Pop(SqStack &s,int &e)//出栈,若栈不空,删除栈顶元素,用e返回其值{ if(s.top==s.base) return 0; e=*--s.top; return 1;}int StackEmpty(SqStack s)//判空{ if(s.base==s.top) return true; else return false;}int GetTop(SqStack S,int &e){ if(S.base==S.top) return 0; e=*(S.top-1); return 1;}int main(){ int x,etop,epop; int result; int value1=0,value2=0; string str; cin>>str; int i=0; InitStack(S); while(str[i]!='#') { if(str[i]>='0'&&str[i]<='9') { x=str[i]-'0';//将字符型转为整型 Push(S,x); } else if(!StackEmpty(S)) { if(str[i]=='+')//作‘+’运算 { Pop(S,epop);//弹出栈顶元素 value2=epop;//获取第一个值 Pop(S,epop);//再弹出栈顶元素 value1=epop;//获取第二个值 result=value1+value2; Push(S,result);//结果进栈 } if(str[i]=='-') { Pop(S,epop); value2=epop; Pop(S,epop); value1=epop; result=value1-value2; Push(S,result); } if(str[i]=='*') { Pop(S,epop); value2=epop; Pop(S,epop); value1=epop; result=value1*value2; Push(S,result); } if(str[i]=='/') { Pop(S,epop); value2=epop; Pop(S,epop); value1=epop; result=value1/value2; Push(S,result); } } else{} i++; } GetTop(S,etop);//获取栈顶元素并输出结果 cout<<etop<<endl; return 0;}
0 0
- SDUT2133数据结构实验之栈三:后缀式求值(栈)
- 数据结构实验之栈三:后缀式求值
- 数据结构实验之栈三:后缀式求值
- 数据结构实验之栈三:后缀式求值
- 数据结构实验之栈三:后缀式求值
- 数据结构实验之栈三:后缀式求值
- SDUT 2133 数据结构实验之栈三:后缀式求值
- 数据结构实验之栈三:后缀式求值
- 数据结构实验之栈三:后缀式求值
- 数据结构实验之栈三:后缀式求值
- 数据结构实验之栈三:后缀式求值
- SDUT 2133 数据结构实验之栈三:后缀式求值
- 数据结构实验之栈三:后缀式求值
- 数据结构实验之栈三:后缀式求值
- 数据结构实验之栈三:后缀式求值
- SDUT 3133 数据结构实验之栈三:后缀式求值
- 数据结构实验之栈三:后缀式求值 SDUT 2133
- 数据结构实验之栈三:后缀式求值
- Roman to Integer
- oracle 服务器
- SVN 和 GIT 新手快速学习方法 和Studio集成我遇到的问题
- Reverse String
- Landlords
- 数据结构实验之栈三:后缀式求值
- virtual box安装出现弹出系统找不到指定的路径解决办法
- 【干货】记一次WAF对抗赛详解&全方位绕过WAF
- [Java并发包学习六]Semaphore介绍
- 基于Dubbo的分布式系统架构-Zookeeper注册中心的安装
- 在AndroidStudio中自定义Gradle插件
- Python知识点整理(函数篇)
- BAPI_CUSTOMERRETURN_CREATE 创建退货订单
- 屏幕适配