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 ++反向波兰语表示法计算器