算法:求表达式的值的通用解法框架

对于一个表达式.我们通常的讲包含两个部分,运算数(数字)和运算符

如: 3 + 5 * 7 其中运算符为 +,* ,数字为3,5,7;

如: 0&1&(1|0), 其中运算符从左往右依次为:&&(|),运算数为0110

而,在求解表达式的值的过程中,算法往往采用两个栈来维护.一个用来存储运算数的num栈,另一个用来存储运算符的op栈.

第一步读入数据

表达式读入.通常以字符串存储.

再尔遍历字符串, 对字符串的各个字符进行操作

这里不考虑表达式的合法性.因为若是求表达式的值,考题的重点在于求值的逻辑,而不在于表达式的合法性,99%的情况下,表达式都是合理的
表达式是否合理, 主要判断是括号的匹配, 以及双目运算符的左右是否各自都是数值.

第二步得到数字和运算符

得到数字

在遍历的过程中, 如果遇到了数字,记得连续选取.这里面先介绍两个工具.

double stod(string s)将字符串转成浮点数

 cout