【练习3.19】
编写一个程序计算后缀表达式的值。
Answer:
计算的方法书上说得很明白了,看代码行,没写错误检测【因为懒】。
测试代码:
1 #include <iostream> 2 #include "stack.h" 3 using namespace std; 4 using namespace stack; 5 template class Stack<int>; 6 int main(void) 7 { 8 calexp item[] = { (4.99), (1.06), ('*'), (5.99), ('+'), (6.99), (1.06), ('*'), ('+') }; 9 cout << postfix_exp(item, 9) << endl; 10 11 system("pause"); 12 }
实现代码:
1 //练习3.19新增,计算后缀表达式,不包含表达式错误检测 2 static enum CalExpType{ CALEXP_NUMBER, CALEXP_OPERATOR }; 3 //表达式元素,当元素类型为数值时则读取num,为操作符时则读取opera 4 struct calexp 5 { 6 public: 7 calexp(double _num) :elemtype(CALEXP_NUMBER), num(_num), opera('