程序实现波兰符号法
时间: 2023-06-22 08:23:43 浏览: 132
编写BISON程序,分析和计算逆波兰表达式
好的,我可以为您介绍一下波兰符号法的实现方法。
波兰符号法,也叫逆波兰表达式,是一种将运算符放在操作数之后的表示方法。可以通过栈来实现逆波兰表达式的计算。具体步骤如下:
1. 将中缀表达式转换为后缀表达式(也就是逆波兰表达式)。
2. 从左到右扫描后缀表达式。
3. 遇到操作数时,将其压入栈中。
4. 遇到运算符时,弹出栈顶的两个操作数,进行运算,并将结果压入栈中。
5. 重复步骤 3 和 4,直到表达式的最右端。
6. 最后栈中只剩下一个元素,即为表达式的结果。
以下是一个 C++ 实现的例子:
```c++
#include <iostream>
#include <stack>
#include <string>
using namespace std;
int main() {
string expr; // 中缀表达式
getline(cin, expr);
stack<int> s; // 存放操作数的栈
for (int i = 0; i < expr.length(); i++) {
if (isdigit(expr[i])) {
int num = 0;
while (isdigit(expr[i])) {
num = num * 10 + (expr[i] - '0');
i++;
}
s.push(num);
i--;
} else {
int op2 = s.top();
s.pop();
int op1 = s.top();
s.pop();
int res;
switch (expr[i]) {
case '+':
res = op1 + op2;
break;
case '-':
res = op1 - op2;
break;
case '*':
res = op1 * op2;
break;
case '/':
res = op1 / op2;
break;
}
s.push(res);
}
}
cout << s.top() << endl;
return 0;
}
```
以上代码实现了一个简单的计算逆波兰表达式的程序,可以通过命令行输入中缀表达式,并输出计算结果。
阅读全文