1.3.11

1.3.11 #

解答 #

官方 JAVA 代码:EvaluatePostfix.java

遇到数字就入栈,遇到运算符就弹出两个数字运算,再把结果入栈。

如果倒着读取的话也可以用递归做,当作前序表达式计算即可。

代码 #

var stack = new Stack<int>();

var input = "7 16 * 5 + 16 * 3 + 16 * 1 +".Split(' ');

foreach (var n in input)
{
    if (n == " ")
    {
        continue;
    }

    if (n == "+")
    {
        stack.Push(stack.Pop() + stack.Pop());
    }
    else if (n == "-")
    {
        var temp = stack.Pop();
        stack.Push(stack.Pop() - temp);
    }
    else if (n == "*")
    {
        stack.Push(stack.Pop() * stack.Pop());
    }
    else if (n == "/")
    {
        var temp = stack.Pop();
        stack.Push(stack.Pop() / temp);
    }
    else
    {
        stack.Push(int.Parse(n));
    }
}

Console.WriteLine(stack.Pop());

另请参阅 #

Generics 库