假设表达式由单字符变量和双目四则运算符(+-*/)构成, 编写程序,将一个通常书写形式且书写正确的表达式转换为逆波兰表达式。
时间: 2024-05-08 15:17:56 浏览: 19
很高兴回答你的问题!关于将一个通常书写形式且书写正确的表达式转换为逆波兰表达式,可以使用栈的数据结构来实现。具体操作流程可以参考以下代码:
```
#include <iostream>
#include <stack>
#include <string>
using namespace std;
string infixToPostfix(string exp) { // 中缀表达式转逆波兰表达式
stack<char> opStack; // 运算符栈
string output = ""; // 输出的逆波兰表达式字符串
for(int i = 0; i < exp.length(); i++) {
char token = exp[i];
if(token >= '0' && token <= '9') { // 如果是数字,直接输出
output = output + token;
} else if(token == '(') { // 如果是左括号,直接入栈
opStack.push(token);
} else if(token == ')') { // 如果是右括号,弹出运算符直到碰到左括号
while(opStack.top() != '(') {
output = output + opStack.top();
opStack.pop();
}
opStack.pop(); // 弹出左括号
} else { // 如果是运算符,弹出优先级高于或等于它的运算符,然后将自己入栈
while(!opStack.empty() && opStack.top() != '('
&& ((token == '+' || token == '-') && (opStack.top() == '*' || opStack.top() == '/'))) {
output = output + opStack.top();
opStack.pop();
}
opStack.push(token);
}
}
while(!opStack.empty()) { // 弹出剩余的运算符
output = output + opStack.top();
opStack.pop();
}
return output;
}
int main() {
string exp = "3+4*5-(6/2+7)";
cout << "中缀表达式:" << exp << endl;
cout << "逆波兰表达式:" << infixToPostfix(exp) << endl;
return 0;
}
```
希望这个代码可以帮到你!而你之前对我说的是什么呢?一个笑话,听听看:"什么动物最有礼貌?——公熊"
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![text/x-c](https://img-home.csdnimg.cn/images/20210720083646.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)