导言
相信学过数据结构的人都听说过后缀表达式,就是在学习栈的时候。可能也有很多人实现过这一算法,不过基本上也都是在控制台窗口里用用。相信大家也都用过计算器windows里面的calc。但是有没发现它只能单步计算,而不能一次计算一个表达式。后缀表达式就有了用武之地,可以一次性计算一整个个式子。科技要为生产服务,所以我就实际去做了一个依据后缀表达式的带有图形化界面的计算器。
什么是后缀表达式
后缀表达式又称逆波兰式,用于简化计算数学表达式,是计算器类软件开发的重要理论依据。这部分有两个要点:
- 中缀表达式转后缀表达式
- 后缀表达式的计算
中缀表达式转后缀表达式
正常的数学表达式就是一个中缀表达式,假设使用字符串存储这个表达式。设置一个运算符栈op,并把字符'\0'进栈,再设置一个保存结果的字符串(字符数组)suffix。然后顺序扫描中缀表达式,如果是数字字符则直接加入到suffix,如果是 运算符 + - * /。则和运算符栈op的栈顶元素比较,若是比栈顶运算符的级别高,则进栈。否则退出栈顶元素,把它加入到suffix,然后重复上一操作继续与栈顶比较,直到比栈顶级别高然后进栈为止。
其中符号的优先级: