后缀数求值
来源:互联网 发布:淘宝买演唱会门票骗局 编辑:程序博客网 时间:2024/06/16 20:43
后缀数求值:
后缀表达式求值的算法:
step1:设置一个空栈;
step2:从左到右扫描这个栈;
step3; 如遇到操作数则入栈,若遇到运算符则从栈中退出两个元素(退一个出栈一次);
step4:先退出的元素放在运算符右边,后退出的元素放到运算符左边;
strp5:运算结果入栈;
step6:回到step2,直到遍历完表达式 (循环
===================================================
表达式:3+(2-5)*6/3
后缀表达式:3 2 5 - 6 3 / * +
#include<cstdio>#include<cstdlib>#include<stack>#include<cstring>#include<algorithm>//#include<windows.h>using namespace std;int main(){stack<char> s; //定义的字符栈char str[100];printf("plese enter a suffix expression:");scanf("%s", str);while (!s.empty())s.pop(); //栈不为空,出栈;int i = 0;while (str[i] != '\0'){if (str[i] >= '0'&&str[i] <= '9'){s.push(str[i] - 48); // s.push(str[i]-'0 ’); ‘9'=57 因为数字的ascii码是连续的所以'9'-'0'=57-48=9}else if (str[i] == '+'){int m = s.top();s.pop(); //不要忘记int n = s.top();s.pop(); //出栈s.push(n + m);}else if (str[i] == '-'){int m = s.top();s.pop();int n = s.top();printf("%d", n);s.pop();}else if (str[i] == '*'){int m = s.top();s.pop();int n = s.top();s.pop();s.push(n* m);}else if (str[i] == '/'){int m = s.top();s.pop();int n = s.top();s.pop();s.push(n /m);}i++;}printf("%d", s.top());printf("\n");//system("pause");return 0;}
阅读全文
0 0
- 后缀数求值
- 中缀转后缀&后缀求值
- 后缀表达式的求值
- 后缀表达式求值
- 后缀表达式求值
- 后缀表达式求值
- 后缀表达式求值
- 四则运算之后缀求值
- 中缀转后缀求值
- 后缀表达式求值
- 后缀式求值
- 后缀式求值
- 【转载】后缀表达式求值
- 后缀表达式求值
- 后缀表达式求值
- 后缀式算数求值
- 后缀表达式求值
- 后缀表达式求值
- 杭电2734QuickSum
- Gop短,图像质量反而好
- Android广播大全
- Java四种线程池的使用
- 背包问题--0/1背包 【模板】
- 后缀数求值
- php笔试面试总结
- 导航控制器和标签控制器
- Activiti中条件分支根据日期类型进行判断的特殊处理
- 蜀传之单刀赴会
- android 按时间显示图片
- 安卓系统广播大全
- 科研数据采集向爬虫
- Next Permutation