求解逆波兰表达式的值,回文数字的判断&&栈的应用
来源:互联网 发布:网络优化工程师 西安 编辑:程序博客网 时间:2024/06/11 04:58
常规数学表达式的前缀表达式称为波兰表示式,后缀表达式又称逆波兰表达式。对于逆波兰表达式的求解可借助于栈,把数字全部压入栈中,遇到计算符号再弹出两个数,计算结果压入栈中,重复这个过程,最后的数字就是计算结果。
例子: 3-(4+8/2)*3=-21 48/3+12-6*2+7=23
输入文件内容:
3 4 8 2 / + 3 * - EOF
48 3 / 12 + 6 2 * - 7 + EOF
#include <iostream>#include<cstdio>#include<cstdlib>using namespace std; bool judge(int x){if(x=='+'||x=='-'||x=='*'||x=='/')return true;return false;}int solve(){ int stack[101],top=0; char a[20]; //'+'-->43 '-'-->45 '*'-->42 '/'-->47 ' '-->32 '0'-->48 '\n'-->10 while(~scanf("%s",&a)){if(a[0]==' ')continue;if(a[0]=='E')break;int b=atoi(a);if(judge(a[0])){int q2=stack[top--],q1=stack[top--],q3; if(a[0]=='+')q3=q1+q2; else if(a[0]=='-')q3=q1-q2; else if(a[0]=='*')q3=q1*q2; else q3=q1/q2; stack[++top]=q3;}else stack[++top]=b;//for(int i=1;i<=top;i++)cout<<stack[i]<<' '; cout<<endl;}return stack[1];}int main(int argc, char *argv[]){ freopen("cin.txt","r",stdin);printf("%d\n",solve()); printf("%d\n",solve());return 0;}回文数字:反着念和正着念的结果一样。这又和栈联系到了一起。把数字存储到栈中,如果新的数字和栈顶数字一样或新的数字和栈顶数字的“顶下"数字一样,那么涉及的数字都弹出,若栈中没有了数字则是一个回文数,否则不是。
回文数字的判断:
int stack[151],top=0;bool judge(){top=0;int a;while(cin>>a){if(a==-1)break;if(top>0&&a==stack[top])top--; else if(top>1&&a==stack[top-1]){ top=top-2; }else stack[++top]=a;}if(top==0)return true;else return false;}
0 0
- 求解逆波兰表达式的值,回文数字的判断&&栈的应用
- 逆波兰表达式的求解
- C++的逆波兰表达式的求解
- 逆波兰表达式的求解问题
- 求解逆波兰表达式(Calculate the reverse Polish notation)。有关栈的最基础应用。
- 数据结构 栈的应用 逆波兰表达式
- 栈的应用:逆波兰表达式
- 栈的应用—逆波兰表达式
- 栈的应用:逆波兰表达式求值
- 栈的应用--逆波兰表达式
- 逆波兰表达式(后缀表达式的求解)
- 求解逆波兰表达式 除了括号都可用的
- 【数据结构】栈的应用—逆波兰表达式
- 栈的应用(括号匹配、逆波兰表达式)
- android 逆波兰表达式的应用(二)逆波兰表达式的计算 -----小达
- android逆波兰表达式的应用(三) 逆波兰表达式的实现 ----- 小达
- android逆波兰表达式的应用(四)逆波兰表达式的计算实现 -----小达
- android 逆波兰表达式的应用(一)逆波兰表达式简介 -----小达
- hdu 5274 水题
- ARC初探
- UIView 的旋转与缩放以及同时应用两种效果
- java 0基础学习总结
- Android中Serializable和Parcelable的用法及区别
- 求解逆波兰表达式的值,回文数字的判断&&栈的应用
- 【VB.NET机房重构】DataGridView导出Excel
- iOS完整学习路线图
- AttributedString设置字体属性
- 解决android中出现的无法加载library的问题
- bootstrap的导航路径和分页器
- 关于softmax 函数求导
- 黑马程序员---高级-反射
- 深刻教训,C#中MVC控制器名称,非区域中不能为UploadController