逆波兰表达式的实现
╮(╯▽╰)╭,刚刚宿舍又熄灯了,今天又犯懒了,本来是想偷懒的,想想还是坚持下吧,又不是什么坏事情,,,摸着瞎瞎来写博客咯~~~,今天就开始结合着代码再将逆波兰表达式的转化问题复习一遍,之前的转化规则再抓过来看看,
<span style="font-size:14px;">1. 正式的开始转化,首先第一个规则就是,遇到数字直接加入到后缀表达式中。(比如第一个数字 9 直接写出)
2. 第二个规则是碰到运算符,需要做不同的处理。
① 若当前符号堆栈为空,则直接入栈。
② 若是 ‘(’ 就直接将其压入栈中,不管符号堆栈是否为空,也是直接入栈。
③ 若当前符号栈中已经有元素了,则弹出栈顶符号,和遇到的那个符号比较运算优先级(不算括号)。
Ⅰ.弹出的运算符优先级大,则将弹出的运算符写入后缀表达式,再重复步骤③
Ⅱ.弹出的运算符优先级小或者等于,则将弹出的运算符压入栈中,再将遇到的运算符也压入栈中。
Ⅲ.弹出的运算符为‘ ( ’,则先压入 ‘(’,再压入遇到的那个符号
④ 若碰到了‘ )’,则不停的从符号栈中弹出运算符至后缀表达式中,直到遇到第一个与之匹配的‘(’为止。这个过 程将中缀表达式中的括号直接去除,这也是后缀表达式的优势。</span>