博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
续前篇-关于逆波兰表达式的计算
阅读量:6328 次
发布时间:2019-06-22

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

相对于逆波兰表达式的转换,逆波兰表达的计算可谓简单不少。

具体计算方法参考:http://www.cnblogs.com/vpoet/p/4659546.html

 

这里也大致梳理一下:

1.新建一个栈将逆波兰表达式的数字依次压入栈中

2.当遇到运算符时,出栈两个数同时将运算结果压栈

3.重复步骤2直到计算计算,栈中的元素即为逆波兰表达式的计算结果。

 

实现如下:

1 #include 
2 #include
3 using namespace std; 4 5 6 int operateprior(char a1) 7 { 8 int prior; 9 10 switch(a1) 11 { 12 case '(': 13 prior=0; 14 break; 15 case ')': 16 prior=0; 17 break; 18 case '+': 19 prior=1; 20 break; 21 case '-': 22 prior=1; 23 break; 24 case '*': 25 prior=2; 26 break; 27 case '/': 28 prior=2; 29 break; 30 case '%': 31 prior=2; 32 break; 33 } 34 return prior; 35 } 36 37 38 char* NiBoLanFun(char* Str) 39 { 40 stack
N; 41 stack
OP; 42 43 while(*Str!='\0') 44 { 45 if(*Str>='0'&&*Str<='9') 46 { 47 N.push(*Str); 48 Str++; 49 } 50 else 51 { 52 if(*Str=='('||OP.empty()) 53 { 54 OP.push(*Str++); 55 } 56 else 57 { 58 if(*Str==')') 59 { 60 while(!OP.empty()) 61 { 62 //cout<<"OP.top="<
<
>str;171 AfterStr=NiBoLanFun(str);172 cout<<"The Trans String is: "<
<

运行截图:

 

注意:

当从栈中弹出两个数据计算的时候应该是考虑两个数的运算顺序当然对于加法乘法运算是没影响的,但

是对于减法除法以及求余运算应该是按照下面的运算顺序:data2/data1 data2-data1 data2%data1

中data2为后出栈的数据,data1为先出栈的数据

转载于:https://www.cnblogs.com/vpoet/p/4674940.html

你可能感兴趣的文章
数据库安全措施的改进依据------未实践
查看>>
洛谷P4501/loj#2529 [ZJOI2018]胖(ST表+二分)
查看>>
关于Input内容改变的触发事件
查看>>
【干货】.NET WebApi HttpMessageHandler管道
查看>>
python 函数的嵌套 和 作用域链
查看>>
在ASP中运行SQL SERVER 存储过程
查看>>
lottie
查看>>
Orace内置函数大全[转:http://www.cnblogs.com/lfx0692/articles/2395950.html]
查看>>
[学习笔记]Segment Tree Beats!九老师线段树
查看>>
[WC2013]平面图——平面图点定位
查看>>
CS1.6 for win7 win10
查看>>
springboot集成freemarker 配置application.properties详解
查看>>
import,reload,__import__在python中的区别
查看>>
在Eclipse中显示行号
查看>>
docker
查看>>
HDU 4292 Food
查看>>
TOJ4537: n阶行列式
查看>>
tp框架之Model类与命名空间
查看>>
冒号课堂 编程范式与OOP思想
查看>>
js获取网页上选中的部分,包含html代码
查看>>