今天我参考严蔚敏的《数据结构》第3章 栈和队列的3.2.5上的问题描述、解决思路和伪代码把表达式求值的问题实现了一遍。
算法输入:
一行数学表达式,以#结尾,例如2+15/3+2+(2+3+4)#;
算法输出:
数学表达式的计算结果;
补充说明:本算法能够在控制台循环输入表达式,循环计算结果,也即输入完一行以#键结束的表达式后,控制台再次等待输入下一行表达式,再次计算结果,如果不想再让控制台计算啦,那你就直接输入#键吧,嘻嘻~
完整代码附在后面,下面说几点今天的收获:
1.由于要用到两个栈,一个栈里的数据类型为整型,而另一个为操作符,也就是字符类型的,而对于栈的一些基础操作都是一样的,例如Push和Pop等,为了节省代码量(主要是自己懒得写啦,而且觉得很没有必要),所以使用了C++里面的模板类的概念。模板类的使用及注意事项可以参考点击打开链接;顺便还查了一下结构体的详细使用方法,有没有typedef的区别,以及在C中和C++中的区别,参考点击打开链接