中缀转后缀表达式,以及表达式的值
来源:互联网 发布:java线程池使用demo 编辑:程序博客网 时间:2024/06/04 20:10
#include <cstdio>#include <stack>#include <cstring>#include <ctype.h>using namespace std;typedef double YP;int precede(char ch1,char ch2){ if(ch1 == '*'||ch1 == '/'){ return 0;}else if(ch1 == '+'||ch1 == '-'){ if(ch2 == '*'||ch2 == '/') return 1; else if(ch2 == '+'||ch2 == '-') return 0;}else if(ch1 == '(') return 1;}YP calculate(char *shu){ int i; stack<YP> uk; for(i = 0;i < strlen(shu);i++) { if(isdigit(shu[i])) uk.push(shu[i] - '0'); else { switch(shu[i]) { case '+':{ YP a = uk.top(); uk.pop(); YP b = uk.top(); uk.pop(); YP c = b + a; uk.push(c); break; } case '*':{ YP a = uk.top(); uk.pop(); YP b = uk.top(); uk.pop(); YP c = b * a; uk.push(c); break; } case '/':{ YP a = uk.top(); uk.pop(); YP b = uk.top(); uk.pop(); YP c = b / a; uk.push(c); break; } default:break; } } } YP k = uk.top(); uk.pop(); return k;}int main(){ char s[100]; char shu[100]; scanf("%s",s); stack<char> ck; int k = 0; // for(int i = 0;i < strlen(s);i++) // if(isdigit(s[i]))printf("%c",s[i]); // // printf("\n"); for(int i = 0;i < strlen(s);i++) { if(isdigit(s[i])) { printf("%c",s[i]); shu[k++] = s[i]; } else if(s[i] == '(') ck.push(s[i]); else if(s[i] == ')') { char ch = ck.top(); while(ch != '(') { printf("%c",ch); shu[k++] = ch; ck.pop(); ch = ck.top(); } ck.pop(); } else { if(ck.empty()) ck.push(s[i]); else if(precede(ck.top(),s[i])) ck.push(s[i]); else { while( !ck.empty() &&!precede(ck.top(),s[i])) { printf("%c",ck.top()); shu[k++] = ck.top(); ck.pop(); } ck.push(s[i]); } } } while(!ck.empty()) { printf("%c",ck.top()); shu[k++] = ck.top(); ck.pop(); } // for(int i = 0;i < k;i++) // printf("%c",shu[i]); printf("\n"); printf("%f \n",calculate(shu)); return 0;}
0 0
- 中缀转后缀表达式,以及表达式的值
- 中缀表达式转后缀,以及后缀表达式的求值
- 中缀表达式转为后缀表达式以及后缀表达式的计算
- 中缀表达式变为后缀表达式,以及后缀表达式的计算
- 1、后缀表达式,以及中缀转后缀算法的思考
- 中缀表达式转后缀表达式 以及 后缀表达式求值
- 中缀表达式转后缀表达式_求表达式的值
- 中缀表达式转后缀表达式 (中缀表达式的计算)
- 中缀表达式转后缀表达式的方法
- 中缀表达式转后缀表达式的方法
- 中缀表达式转后缀表达式的实现
- 中缀表达式转后缀表达式及后缀表达式的计算
- 中缀表达式转后缀表达式,并计算后缀表达式值
- 中缀转后缀表达式
- 表达式中缀转后缀
- 中缀转后缀表达式
- 数据结构中缀表达式转后缀表达式以及后缀转中缀表达式
- 中缀表达式转后缀表达式
- SETI--高斯消元
- oracle 进阶三(索引、权限,角色)
- CSS选择器 first-child 、first-of-type 和 nth-of-type()
- web小记(一)
- 什么是HTML5(一):语义
- 中缀转后缀表达式,以及表达式的值
- [读书笔记]程序员的自我修养 chp11
- SpringMVC @RequestBody接收Json对象字符串
- 初识-IIS(互联网信息服务)
- sql map
- 《CSS层叠样式表》-----第四课
- response返回的json数据的list对象返回错误
- Shell中的正则表达式
- Hibernate-hibernate 中 Long 与 int 的转换