中缀表达式转换为后缀表达式C++代码
时间: 2024-04-21 14:21:40 浏览: 129
C++实现中缀表达式转后缀表达式
5星 · 资源好评率100%
中缀表达式转换为后缀表达式是一种常见的算法,也称为逆波兰表达式。下面是一个示例的C++代码实现:
```cpp
#include <iostream>
#include <stack>
#include <string>
// 判断运算符的优先级
int getPriority(char op) {
if (op == '+' || op == '-')
return 1;
else if (op == '*' || op == '/')
return 2;
else
retu 0;
}
// 将中缀表达式转换为后缀表达式
std::string infixToPostfix(const std::string& infix) {
std::string postfix; // 后缀表达式
std::stack<char> opStack; // 运算符栈
for (char ch : infix) {
if (ch == ' ')
continue;
if (isdigit(ch) || isalpha(ch)) {
postfix += ch;
} else if (ch == '(') {
opStack.push(ch);
} else if (ch == ')') {
while (!opStack.empty() && opStack.top() != '(') {
postfix += opStack.top();
opStack.pop();
}
opStack.pop(); // 弹出左括号
} else {
while (!opStack.empty() && getPriority(opStack.top()) >= getPriority(ch)) {
postfix += opStack.top();
opStack.pop();
}
opStack.push(ch);
}
}
while (!opStack.empty()) {
postfix += opStack.top();
opStack.pop();
}
return postfix;
}
int main() {
std::string infixExpression;
std::cout << "请输入中缀表达式: ";
std::getline(std::cin, infixExpression);
std::string postfixExpression = infixToPostfix(infixExpression);
std::cout << "后缀表达式: " << postfixExpression << std::endl;
return 0;
}
```
阅读全文