堆栈从后缀转换为中缀

时间:2013-04-06 00:54:19

标签: java stack postfix-notation

您好我正在Java上练习一些堆栈,我正在尝试解决堆栈问题。我试图编写一个采用后缀表示法并将其转换为中缀的方法。这就是我到目前为止所做的:

`
public void convertion() {
        Stack<Integer> stack;          // For evaluating the expression.
        stack = new Stack<Integer>();  // Make a new, empty stack.

        Scanner scan = new Scanner(postfix);

        int t1, t2 = 0;     //Operands

        boolean check = false;


        while (scan.hasNext() && !check) {
            if (scan.hasNextInt()) {
                int operand = scan.nextInt();
                stack.push(operand);
            } else {
                char operator = scan.next().charAt(0);
                try {

                        while(stack.)


                } catch (EmptyStackException e) {
                    answer = "Malformed postfix expression";
                    check = true;
                }

            }
        }
        scan.close();
        try {
            answer = "" + stack.pop();
        } catch (EmptyStackException e) {
            answer = "Malformed postfix expression";
        }
    }
`

我遇到麻烦的部分是我应该放在试用部分上的内容。基本上我把所有数字都推到了堆栈中,但是一旦我找到了一个运算符,我该如何合并两个操作数和运算符。

感谢。

1 个答案:

答案 0 :(得分:-1)

您想要弹出前两个堆栈元素,对它们执行适当的操作,然后推回结果:

try {
    int o1 = stack.pop().intValue();
    int o2 = stack.pop().intValue();
    switch (operator) {
        case '+': stack.push(new Integer(o1 + o2));
                  break;
        case '-': stack.push(new Integer(o1 - o2));
                  break;
        ...
    }
}
catch (EmptyStackException e) {
    ...