1.求后缀表达式时的原理
-
使用后缀表达式求值时,除了运算符号入栈出栈有优先级
-
数字与运算符之间也有一定的联系,每个运算符必定联系到两个数字
-
运算符与运算符之间也有联系,如果单个加减直接出现在乘除之前,那么这个表达式一定是有括号的
-
所以根据以上两种原理,可以设计程序处理后缀表达式求值
2.如何安排逻辑来计算数值
-
1.先判断字符是否是数字还是运算符(isdigit)
-
2.把字符数字转换为Int类型
-
3.栈中只存数字,遇到数字则直接入栈
-
4.遇到运算符弹出栈中顶层的两个元素进行运算(记住先入栈的后弹出)
-
5.运算完的结果继续入栈,进行下一次操作
3.图形化和通俗化比喻主要逻辑函数
主要问题
这个程序的主要问题就是如何确定该怎么进行数字之间的运算,其他都不足为虑,这时候可能想不出来好的方法,或者看资料也比较生涩难懂,这时候我觉得就可以首先,写一下画一下,再解决不了就比喻举例子画图,这样可以加深理解加深印象.
处理方法
1.简单式
把实验的数据写在纸上,摸索规律,或者用电子文档,把数据处理的规律处理出来
Exampl: 2 1 + 3 * ==(2+1)*3=9; //这个数据不直接按顺序来,为啥呢?这时候就需要思考,因为运算符号,+是位于*的前面!,所以原表达式一定存在括号,仔细想一下就知道括号是+号运算 Example: 1 2 + 1 2 + -==(1+2)-(1+2)=0; Example: 1 2 + 1 2 - +==1+2-1+2=4; //上面的例子可能比较特殊,那么相同数据按理说有不同的结果,遇到相同的运算符该怎么处理呢,这时候还是需要搞实验找规律,可以看到例子1是有括号的,例子2是没有括号的,按照后缀表达式,想一下打架可以想明白,但是计算机不是我们的大脑,用上面方法处理他呢
数据实验
其实这时候我们把这些数据和栈一联系,思路就来了!
Exampl: 2 1 + 3 * ==(2+1)*3=9; Example: 1 2 + 1 2 + -==(1+2)-(1+2)=0; Example: 1 2 + 1 2 - +==1+2-1+2=4; //这里我们直接看运算符号和数字之间的关系,根据上面的思路,一联系就能完全明白;
2.升级式
把自己难以理解不好理解的逻辑用比喻搞成实际中存在的实物,艺术来源于生活,更能方便自己理解
这时候我们可以把这一整个过程,看成一群人在进行跑步比试,这些人两两一组,运动会大家都参加过嘛,就很好理解