逆波兰表达式

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.升级式

把自己难以理解不好理解的逻辑用比喻搞成实际中存在的实物,艺术来源于生活,更能方便自己理解

这时候我们可以把这一整个过程,看成一群人在进行跑步比试,这些人两两一组,运动会大家都参加过嘛,就很好理解

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值