码迷,mamicode.com
首页 > 其他好文 > 详细

栈应用——逆波兰式表达式的值

时间:2016-04-30 15:30:24      阅读:266      评论:0      收藏:0      [点我收藏+]

标签:

问题描述:

    计算给定的逆波兰表达式(即后缀表达式)的值。

事实上,二元运算的前提下,中缀表达式可以对应一棵二叉树;逆波兰式即该二叉树后序遍历的结果。

 

分析思路:

  • 如果当前是操作数,则直接入栈;
  • 如果当前是操作符,则栈顶的两个元素弹出,然后与当前操作符运算后入栈。

 

Code:

    /**
     * 给出一个逆波兰式,计算该表达式的值
     * @param s
     * @return
     */
    public int getTheValueOfRPN(String s) {
        char[] ch = s.toCharArray();
        Stack<Integer> stack = new Stack<Integer>();
        for(int i=0; i<ch.length; i++) {
            if(isOperator(ch[i])) {
                int v1 = stack.peek();
                stack.pop();
                int v2 = stack.peek();
                stack.pop();
                if(ch[i] == ‘+‘)
                    stack.push(v1 + v2);
                else if(ch[i] == ‘-‘)
                    stack.push(v1 - v2);
                else if(ch[i] == ‘*‘)
                    stack.push(v1 * v2);
                else 
                    stack.push(v1 / v2);
            }
            else 
                stack.push(Integer.valueOf(ch[i]-48));
            
        }
        return stack.pop();
    }

    private boolean isOperator(char c) {
        // TODO Auto-generated method stub
        if(c == ‘+‘ || c == ‘-‘ || c == ‘*‘ || c == ‘/‘)
            return true;
        return false;
    }

 

栈应用——逆波兰式表达式的值

标签:

原文地址:http://www.cnblogs.com/little-YTMM/p/5448803.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!