后缀表达式的概念
后缀表达式又称作逆波兰式,操作符在运算数的后面,所以叫做后缀表达式。例如 1 + 2 * 3的后缀表达式是 1 2 3 * + 。可以 2 3 *看作一个运算数a, 1 a * 也符合运算数 运算数 操作符的格式。
怎么利用栈计算
- 当遇到运算数,进栈
- 遇到操作符 $,从栈中弹出两个运算数a 、b, 计算 b $ a 的结果,结果进栈
- 读取玩后缀表达式后,栈中只有一个元素,这个元素即为结果
代码
代码的特殊处理:
因为要处理大于9的数,所以要在每个数和操作符后加上空格,将相邻的数分隔开。
后缀表达式以字符串的形式存在,所以要将字符形式的数字转化为数值类型。
我只处理了加减乘除四则运算,只能使用正整数。
#include<stdio.h>
#include<stack>
int CalPostfix(char expre[]){
int num; //储存运算数
int num1; //储存栈中弹出的第一个数
int num2; //储存弹出的第二个数
std::stack<int> s;
int i =