首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从后缀到中缀的堆栈转换

从后缀到中缀的堆栈转换
EN

Stack Overflow用户
提问于 2013-04-06 08:54:19
回答 1查看 1.4K关注 0票数 0

你好,我正在练习Java上的一些堆栈,我正在尝试做一个关于堆栈的问题。我正在尝试编写一个方法,它接受后缀符号并将其转换为中缀。这就是我到目前为止所知道的:

代码语言:javascript
复制
`
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";
        }
    }
`

我遇到麻烦的部分是关于我应该把什么放在try部分。基本上我把我找到的所有数字都压入栈中,但是一旦我找到一个运算符,我如何合并这两个操作数和运算符。

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2013-04-06 10:43:50

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

代码语言:javascript
复制
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) {
    ...
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15845824

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档