计算四则运算表达式主要是分两步运算

      第一步是把 中缀表达式 转换成 后缀表达式。参考大一下期学的 《数据结构与算法分析--C语言描述》3.3.3 教材,完成下列代码:

 

static String mid_to_suf(String str) {
        Stack<Character> s = new Stack<Character>();
        String suf = new String();
        HashMap<Character, Integer> map = new HashMap<Character, Integer>();
        map.put('+', 1); // 设置运算符的优先级
        map.put('-', 1);
        map.put('*', 2);
        map.put('/', 2);
        map.put('(', 3);
        for (int i = 0; i < str.length(); i++) {
            char c = str.charAt(i);
            while (c >= '0' && c <= '9') {
                suf += c;
                if (i + 1 < str.length())
                    i++;
                c = str.charAt(i);
            }
            suf += ' ';
            if (c == '=')
                break;
            if (c == ' ')
                suf += c;
            else {
                if (s.isEmpty())
                    s.push(c);
                else {
                    while (!s.isEmpty()) {
                        char op = s.peek();
                        if (op == '(')
                            break;
                        if (map.get(op) < map.get(c))
                            break;
                        else {
                            s.pop();
                            suf += op;
                        }
                    }
                    s.push(c);
                }
            }
        }
        while (!s.isEmpty())
            suf += s.pop();
        return suf;
    }
View Code

 

相关文章: