博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
计算后缀表达式
阅读量:4567 次
发布时间:2019-06-08

本文共 1929 字,大约阅读时间需要 6 分钟。

1 #include
2 #include
3 #include
4 using namespace std; 5 6 void TransformExpr(char *oldexpr,char *newexpr) 7 { 8 stack
s; 9 int i=0; 10 int j=0; 11 while(oldexpr[i] != '\0') 12 { 13 switch(oldexpr[i]) 14 { 15 case '(' : 16 s.push(oldexpr[i++]); 17 break; 18 case '+': 19 case '-': 20 while(s.size()>0 && s.top() != '(') 21 { 22 newexpr[j++] = s.top(); 23 s.pop(); 24 } 25 s.push(oldexpr[i++]); 26 break; 27 case '*': 28 case '/': 29 while(s.size()>0 && s.top() != '(' && (s.top() == '*' || s.top() == '/')) 30 { 31 newexpr[j++] = s.top(); 32 s.pop(); 33 } 34 s.push(oldexpr[i++]); 35 break; 36 case ')': 37 while(!s.empty()) 38 { 39 char temp = s.top(); 40 s.pop(); 41 if(temp != '(') 42 { 43 newexpr[j++] = temp; 44 } 45 else 46 { 47 ++i; 48 break; 49 } 50 ) 51 break; 52 53 case ' ': 54 ++i; 55 break; 56 default : 57 while(oldexpr[i] >= '0' && oldexpr[i] <= '9') 58 { 59 newexpr[j++] = oldexpr[i]; 60 ++i; 61 } 62 newexpr[j++] = '#'; 63 break; 64 } 65 ) 66 while(!s.empty()) 67 { 68 newexpr[j++] = s.top(); 69 s.pop(); 70 } 71 newexpr[j] = '\0'; 72 ) 73 74 int Calculate(char *expr) 75 { 76 int i=0; 77 stack
data; 78 int tmp; 79 while(expr[i] != '\0') 80 { 81 tmp = 0; 82 if(expr[i] >= '0' && expr[i] <= '9') 83 { 84 while(expr[i] >= '0' && expr[i]<='9') 85 { 86 tmp = tmp * 10 + expr[i++] - '0'; 87 } 88 data.push(tmp); 89 } 90 else if(expr[i] == '#') 91 ++i; 92 else 93 { 94 int a,b; 95 a= data.top(); 96 data.pop(); 97 b= data.top(); 98 data.pop(); 99 switch(expr[i++])100 {101 case '+':102 tmp = b+a;103 data.push(tmp);104 break;105 case '-':106 tmp = b-a;107 data.push(tmp);108 break;109 case '*':110 tmp = a*b;111 data.push(tmp);112 break;113 case '/':114 tmp = b/a;115 data.push(tmp);116 break;117 }118 }119 }120 return data.top();121 }

 

转载于:https://www.cnblogs.com/susidian/p/10013232.html

你可能感兴趣的文章
mysql 导出查询结果到文件
查看>>
Js参数值中含有单引号或双引号解决办法
查看>>
python5
查看>>
js转换/Date(........)/
查看>>
mysql中limit用法
查看>>
c++ std::thread + lambda 实现计时器
查看>>
NSRunLoop个人理解
查看>>
BZOJ_1031_[JSOI2007]_字符串加密_(后缀数组)
查看>>
[osg]osg窗口显示和单屏幕显示
查看>>
前端技术在线文档地址链接
查看>>
077_打印各种时间格式
查看>>
[LeetCode] 101. Symmetric Tree_ Easy tag: BFS
查看>>
前端基础之html
查看>>
.Net基础之3——运算符
查看>>
scrapy管道MySQL简记
查看>>
使用 jQuery Deferred 和 Promise 创建响应式应用程序
查看>>
Bzoj1013--Jsoi2008球形空间产生器
查看>>
报文格式【定长报文】
查看>>
RDLC报表钻取空白页问题
查看>>
多路电梯调度的思想
查看>>