求逆波兰式

  昨天面试时,面试官问,如何编程处理一个算术表达式。刚好,我做过leetcode上的一道题,就是用逆波兰式求算术表达式。然后稍微思考了一下,给出了正确结果。

面试官,接着问,如何求逆波兰式,没有想出结果来。网上看了一些资料后,现在将过程整理如下,加深印象;

       

(1)首先遍历算术表达式,依次遍历每个位置的字符,cur。

       (1.1)如果cur为运算分量(连续的几个数字),则直接输出结果。

       (1.2)  如果cur为(,则直接入栈。

                    如果cur为 ),依次将栈中(到栈顶的运算符,出栈。

                    如果cur运算符,若栈顶元素是(,则直接入栈。否则,比较cur与栈顶元素的优先级,如果比栈顶元素优先级大,则直接将当                       前运算符入栈。否则,将栈顶元素出栈输出。循坏执行上面的步骤,直至优先级大于栈顶元素或者栈为空,将当前元素符入栈。

(2)栈不为空,依次输出栈中所有的运算符。

   至此,方法结束。

posted @ 2017-09-22 10:37  cheerupWoo  阅读(552)  评论(0编辑  收藏  举报