【stack 实现前缀、后缀、中缀表达式运算】
2015-10-20 15:09
525 查看
问题一:输入一个前缀表达式,每个运算符和数字之间都有一个空格,输入的数字全为正实数。
代码实现:
测试数据:
问题二:同问题一,输入一个后缀表达式,求结果。
代码实现:
测试数据:
问题三:求解中缀表达式,要求同问题一。
暂时看这个吧 点我 抽空补上新代码 现在要写数据结构实验了
╮(╯▽╰)╭
代码实现:
#include <cstdio> #include <cstring> #include <cmath> #include <cstdlib> #include <queue> #include <stack> #include <algorithm> #define MAXN 600 using namespace std; char str[MAXN]; void solve(char *s) { stack<double> S; strrev(s); char num[MAXN]; int t = 0; bool flag = false; int len = strlen(s); for(int i = 0; i <= len; i++) { if(s[i] >= '0' && s[i] <= '9' || s[i] == '.') { flag = true; num[t++] = s[i]; } else if(s[i] == ' ' || s[i] == '\0') { if(flag) { num[t] = '\0'; strrev(num);//从后向前扫 碰到数字用字符串记录后,需要反转 S.push(atof(num)); t = 0; flag = false; } } else { double a = S.top(); S.pop(); double b = S.top(); S.pop(); double c; switch(s[i]) { case '+': c = a + b; break; case '-': c = a - b; break; case '*': c = a * b; break; case '/': c = a / b; } S.push(c); } } printf("%.2lf\n", S.top()); } int main() { while(gets(str)){ solve(str); } return 0; }
测试数据:
1 1.00 10.1234 10.12 + 2 * + 3 4 5 37.00 + 5.1 / 3 7 5.53
问题二:同问题一,输入一个后缀表达式,求结果。
代码实现:
#include <cstdio> #include <cstring> #include <cmath> #include <cstdlib> #include <queue> #include <stack> #include <algorithm> #define MAXN 600 using namespace std; char str[MAXN]; void solve(char *s) { stack<double> S; char num[MAXN]; int t = 0; bool flag = false; int len = strlen(s); for(int i = 0; i <= len; i++) { if(s[i] >= '0' && s[i] <= '9' || s[i] == '.') { flag = true; num[t++] = s[i]; } else if(s[i] == ' ' || s[i] == '\0') { if(flag) { num[t] = '\0'; S.push(atof(num)); t = 0; flag = false; } } else { double b = S.top(); S.pop();//两数位置和前缀不一样 double a = S.top(); S.pop(); double c; switch(s[i]) { case '+': c = a + b; break; case '-': c = a - b; break; case '*': c = a * b; break; case '/': c = a / b; } S.push(c); } } printf("%.2lf\n", S.top()); } int main() { while(gets(str)){ solve(str); } return 0; }
测试数据:
1 1.00 10.1234 10.12 2 3 4 + 5 * + 37.00 5.1 3 7 / + 5.53
问题三:求解中缀表达式,要求同问题一。
暂时看这个吧 点我 抽空补上新代码 现在要写数据结构实验了
╮(╯▽╰)╭
相关文章推荐
- ASP.NET MVC 必备知识点杂谈
- 入侵指定网站的思路~菜鸟必学
- 获取<meta-data>元素的value属性的值
- 查看MySQL的当前存储引擎
- 家庭作业
- HIbernate基于外键的查询
- POJ 1741 Tree 树的分治
- Android 默认把触摸屏show touches打开
- css浮动
- jenkins maven tomcat做持续集成的时候几个关键配置
- 【Windows10】如何使用Segoe MDL2 Assets图标
- 转屏
- ios 获取当前时间
- 家庭作业2.68 2.70
- JSF生命周期
- 自己动手开发音视频播放器
- Spark与Hadoop关系
- mybatis存储过程调用
- app升级,获取AppStore版本号和本地版本号
- 传递可变参数