c_cpp 评估反向波兰表示法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 评估反向波兰表示法相关的知识,希望对你有一定的参考价值。

/*
The infix expression "5 + ((1 + 2) * 4) − 3" can be written down like this in RPN:
5 1 2 + 4 * + 3 -
*/
int evalRPN(vector<string> &tokens) {
    if(tokens.empty()) return 0;
    stack<int> stk;
    int i=0;
    while(i < tokens.size()) { // should be "9" not '9'
        if(tokens[i] != "+" && tokens[i] != "-" && tokens[i] != "*" && tokens[i] != "/")  
            stk.push(atoi(tokens[i].c_str()));
        else {
            int op1 = stk.top(); stk.pop();
            int op2 = stk.top(); stk.pop();
            char op = tokens[i];
            if(op == "+") stk.push(op2 + op1);       // op1 first, op1 second
            else if(op == "-") stk.push(op2 - op1);  // op2 first, op1 second
            else if(op == "*") stk.push(op2 * op1);
            else if(op == "/") stk.push(op2 / op1);
        }
        i++;
    }
    return stk.top();
}

以上是关于c_cpp 评估反向波兰表示法的主要内容,如果未能解决你的问题,请参考以下文章

java 150.评估反向波兰表示法(#)

java 150.评估反向波兰表示法(#)

java 150.评估反向波兰表示法(#)

java 150.评估反向波兰表示法(#)

反向波兰表示法Java

问题C ++反向波兰语表示法计算器