课后作业2
- 在文章开头写出你目前的代码量。
目前写过几千行代码
- 在文章开头给出你所Fork的同名仓库的Github项目地址。
https://gitee.com/sybrjsjrg_br_jsj_rg/personal_project41634.git
- 在开始实现程序前,在下述PSP表格记录下你估计将在程序的各个模块的开发上耗费的时间。并说明估计根据。

程序对表达式类型的支持程度。描述你的程序对不同类型表达式求值的支持程度。
- 能支持两个操作数,一种运算符。
- 能支持两个操作数的简单四则运算(只有一个操作符)。
- 能支持简单混合四则运算(最多有3个操作符,没有括号)。
- 程序设计与实现过程。设计包括代码如何组织,比如会有几个类,几个函数,他们之间关系如何,关键函数是否需要画出流程图?说明你实现算法的关键部分(不必列出源代码),以及实现过程中遇到的关键问题与困难。
一开始拿到题目时,也是想到通过判断拿到的字符串中是否含有“+、- 、*、/”运算符,来进行计算,但是这种算法没办法实现混合的四则运算,所以我查找了有关资料,包括后缀表达式,栈队有关知识等,并且借鉴了很多大神的博客,基本思路如下:
1.将表达式分解成操作数和操作符数组
2.将中缀表达式数组转换成后缀栈:按顺序遍历符号,如果是操作数直接输出,如果栈为空,或符号优先级比栈顶的符号优先级高,直接入栈,如果栈不为空,并且符号优先级小于等于栈顶符号优先级,先弹出并输出栈顶符号,直到栈为空或符号优先级比栈顶的符号优先级高,然后再将当前符号入栈,所有符号都遍历了,如果栈中还有符号,弹出并输出。
3.计算后缀表达式
4.应用操作符进行计算
基本过程如图:

算法的关键步骤:
l 将中缀表达式转换成后缀表达式
l 计算后缀表达式

浙公网安备 33010602011771号