c语言这两个式子用“逆波兰式”3小于5怎么写写

中缀双目表达式叫做波兰式后綴双目表达式叫做逆波兰式。

逆波兰式的作用:计算机在计算一个表达式的时候就没有了优先级的概念计算的过程简化为从左往右依次從逆波兰式中读取,读取到一个运算符则从其前面取出两个数字做这个运算符的运算运算结果放置到当前位置,然后在从左至右开始第②次运算直到算出结果。

-读取到-,则取出17和6做减法17-6=11并将其放置到以前的序列中,计算结束

给定一个波兰式,将逆波兰式(各个符号の间用空格隔开)输出假设波兰式在数组a中,逆波兰式最后在数组b中

思路:从逆波兰式和波兰式对比来看,数字的相对位置总是一致的然而运算符的位置却不是一致的。运算符的位置满足碰到高优先级的入栈(栈是另外新建的一个数据结构不是a也不是b),碰到低优先级的絀栈(出栈后就放到b中)比如读取2+3*5这个波兰式,读取到2直接存放如b中然后读取+,这个先放入栈中然后读取3又放入b中,接着读取到**嘚优先级比+高,所以*又在+之后入栈最后读取5,直接存放如b中表达式读取完毕,需要将栈中的所有运算符出栈到b中就得到了:2 

要完成這个功能,需要一个栈而且栈的第一个单元必须放置一个默认的优先级最低的运算符,以保证第一个运算符能够入栈

关于括号的处理:左括号if语句直接入栈,括号后的表达式按上面的顺序依次入栈或者出栈;碰到右括号则从栈中出栈直到碰到第一个左括号将左括号从棧中取出这一级括号则处理完毕。


我要回帖

更多关于 3小于5怎么写 的文章

 

随机推荐