C++实现:精准将中缀表达式(≤2000字符)转换为前缀表达式
```cpp #include <iostream> #include <stack> #include <string> // 函数用于判断字符是否为运算符 bool isOperator(char c) { return (c == '+' || c == '-' || c == '*' || c == '/'); } // 函数用于获取运算符的优先级 int getPriority(char op) { if (op == '+' || op == '-') return 1; if (op == '*' || op == '/') return 2; return 0; } // 中缀表达式转前缀表达式的函数 std::string infixToPrefix(std::string infix) { std::stack<char> opStack; std::string prefix; for (int i = infix.size() - 1; i >= 0; i--) { char c = infix[i]; if (isdigit(c)) { prefix = c + prefix; } else if (isOperator(c)) { while (!opStack.empty() && getPriority(opStack.top()) >= getPriority(c)) { prefix = opStack.top() + prefix; opStack.pop(); } opStack.push(c); } else if (c == '(') { while (opStack.top()!= ')') { prefix = opStack.top() + prefix; opStack.pop(); } opStack.pop(); } else if (c == ')') { opStack.push(c); } } while (!opStack.empty()) { prefix = opStack.top() + prefix; opStack.pop(); } return prefix; } int main() { std::string infix; std::cout << "请输入中缀表达式: "; std::cin >> infix; std::string prefix = infixToPrefix(infix); std::cout << "前缀表达式: " << prefix << std::endl; return 0; } ``` 额外注意逻辑点: 1. 对于输入的中缀表达式,要确保其格式正确,没有非法字符。 2. 在处理括号时要特别小心,确保匹配正确。 3. 对于运算符的优先级判断要准确,以保证转换结果的正确性。 ######[AI写代码神器 | 523点数解答 | 2025-02-27 18:12:13]
- 递归下降语法分析程序实例:从文法到 C 代码的完整实现(字节豆包 | 1371点数解答 | 2024-12-12 22:46:04)273
- C++实现读取数字并输出最小值的代码及解释(字节豆包 | 113点数解答 | 2026-03-20 19:32:56)20
- 编辑距离算法:C++ 实现及开发易错点解析(字节豆包 | 521点数解答 | 2025-08-20 14:58:56)172
- C++实现:解决编辑距离问题及开发注意要点(字节豆包 | 586点数解答 | 2025-08-22 15:48:48)157
- C++求解编辑距离:普通写法要点与易错提示 (字节豆包 | 547点数解答 | 2025-08-22 15:49:32)158
- C++实现编辑距离计算:小心下标、边界与状态转移!(字节豆包 | 571点数解答 | 2025-08-22 15:51:59)214
- SQL 实现:精准查询 20 岁选课学生学号、姓名、平均与总成绩(去重取最高) (字节豆包 | 116点数解答 | 2024-10-21 00:46:57)215
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)362
- C语言:按特定格式输入并格式化输出整数、实数和字符(字节豆包 | 103点数解答 | 2024-10-24 11:12:53)413
- Python 实现按指定字符位置逆序字符串,处理多种边界情况!(字节豆包 | 197点数解答 | 2024-11-22 16:55:09)329
- C++实现n×n图案输出:中间行'#'其余'*',开发需注意三点!(字节豆包 | 265点数解答 | 2026-01-16 19:06:25)57
- Python破解NOIP2015基础扫雷游戏:计算非地雷格周围地雷数(字节豆包 | 545点数解答 | 2026-02-02 17:34:02)62