数据结构与算法分析——c语言描述 练习3.19 3.20 a b 答案
这道题以前发过文章。现在能支持幂^了。
栈的利用
挺重要的一个思想是 操作符 根据优先级分级
再次更新
1.支持+ - * / ^
2.支持括号
3.支持括号前后省略*,例如5(4)5=100
4.支持小数点
#include<stack>
#include<stdio.h>
#include<ctype.h>
#include<string>
#include<map>
using namespace std;
#define MAXN 100
char expression[MAXN];//输入的表达式
string postfix[MAXN];//转换成的逆序表达式
int i = 0, j = 0;//i是expression的游标,postfix是逆序表达式的游标
map<char, double(*)(double, double)> operaFunc;//运算符字符与运算函数的映射
double _add(double x, double y) { return x + y; }
double _sub(double x, double y) { return x - y; }
double _mul(double x, double y) { return x * y; }
double _div(double x, double y) { return x / y; }
double _power(double x, double n) {//计算幂次方
double ans = 1;
for (double i = 0; i < n; i++)