数据结构实验之栈三:后缀式求值
2016-05-22 09:56
239 查看
对于一个基于二元运算符的后缀表示式(基本操作数都是一位正整数),求其代表的算术表达式的值。
输入
输入一个算术表达式的后缀式字符串,以‘#’作为结束标志。
输出
求该后缀式所对应的算术表达式的值,并输出之。
示例输入
59*684/-3*+#示例输出
57
题解:这道题用栈来做,首先你输入的是字符,因此在输入的是数字的时候,应该把它转化成相应的整形,放的栈里,接下来就简单了,遇到数字就入栈,遇到运算符号就把栈顶的两个数进行运算,再将这两个数出栈,将得到的结果入栈。
输入
输入一个算术表达式的后缀式字符串,以‘#’作为结束标志。
输出
求该后缀式所对应的算术表达式的值,并输出之。
示例输入
59*684/-3*+#示例输出
57
题解:这道题用栈来做,首先你输入的是字符,因此在输入的是数字的时候,应该把它转化成相应的整形,放的栈里,接下来就简单了,遇到数字就入栈,遇到运算符号就把栈顶的两个数进行运算,再将这两个数出栈,将得到的结果入栈。
#include<bits/stdc++.h> using namespace std; int main() { int n,m; char ch; stack<int> num; while(scanf("%c",&ch)!=EOF&&ch!='#') { if(ch=='-'||ch=='+'||ch=='*'||ch=='/') { if(ch=='-') { m=num.top(); num.pop(); m=num.top()-m; num.pop(); num.push(m); } else if(ch=='*') { m=num.top(); num.pop(); m=num.top()*m; num.pop(); num.push(m); } else if(ch=='+') { m=num.top(); num.pop(); m=num.top()+m; num.pop(); num.push(m); } else if(ch=='/') { m=num.top(); num.pop(); m=num.top()/m; num.pop(); num.push(m); } } else { n=(int)ch-48;//将字符转化成整形 cout<<n<<" "; num.push(n); } } cout<<num.top(); }
相关文章推荐
- Java千百问_06数据结构(020)_String是什么
- Huffman树的构造及编码
- SDUT1130数据结构上机测试1:顺序表的应用
- 若干数据结构 && 算法面试题【二】 (更新完毕)
- js的数据结构
- 深入理解数据结构之散列表
- 数据结构栈的操作
- 堆排序-----数据结构
- 堆排序-----数据结构
- 数据结构——红黑树
- HDU 5692 线段树
- 数据结构 -图
- 常用数据结构的功能及复杂度总结
- 利用VisuAlgo通过动画学习算法和数据结构
- 【算法总结系列-4】通过- 栈 -检验回文数
- [数据结构]九大基础排序算法总结
- 数据结构--线性表的链式表示与实现
- 数据结构中 深度优先遍历 堆 邻接表
- 跟着郝斌学数据结构(10)——链式二叉树
- 【数据结构】跳表