后缀式求值
2015-06-16 21:41
267 查看
数据结构实验之栈三:后缀式求值
Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^
题目描述
对于一个基于二元运算符的后缀表示式(基本操作数都是一位正整数),求其代表的算术表达式的值。输入
输入一个算术表达式的后缀式字符串,以‘#’作为结束标志。输出
求该后缀式所对应的算术表达式的值,并输出之。示例输入
59*684/-3*+#
示例输出
57
提示
基本操作数都是一位正整数!来源
#include<bits/stdc++.h> using namespace std; string s; int ss[100000]; int main() { while(cin>>s) { int len =s.size(); int top=0; for(int i=0;i<len;i++) { if(s[i]=='#') break; if(s[i]>='0'&&s[i]<='9') ss[++top]=s[i]-'0'; else if(s[i]=='*') { ss[top-1]*=ss[top]; top--; } else if(s[i]=='-') { ss[top-1]-=ss[top]; top--; } else if(s[i]=='/') { ss[top-1]/=ss[top]; top--; } else if(s[i]=='+') { ss[top-1]+=ss[top]; top--; } } cout<<ss[top]<<endl;; } }
/*运用后缀表达式进行计算的具体做法:
1 ·建立一个栈S
2 ·从左到右读后缀表达式,读到数字就将它转换为数值压入栈S中,读到运算符则从栈中依次弹出两个数分别到Y和X,然后以“X 运算符 Y”的形式计算机出结果,再压加栈S中
3 ·如果后缀表达式未读完,就重复上面过程,最后输出栈顶的数值则为结束
*/
相关文章推荐
- Hadoop常见重要命令行操作及命令作用
- 国内外MD5在线解密网站
- Linux asyn-io for socket
- 技术培训----线上 PK 线下?
- 技术培训----线上 PK 线下?
- 数据库操作(2)------------SQLite存储方式
- 并查集-按秩合并
- 同步问题总结
- 新博客开启
- CentOS 安装mysql
- AspNetPager的使用
- windows下XAMPP安装php_memcache扩展
- Tomcat如何添加管理员
- 连接远程LINUX服务器
- 人生故事
- java中的Radom类
- Class.forName().newInstance()和通过new得到对象的区别
- STL之list容器详解
- JSF探索--URL映射,web.xml配置
- Mysql中explain命令查看语句执行概况