栈,逆波兰表达式???
2015-12-04 13:34
155 查看
这两天一直在想老师提出的要求:四个数的运算,让一个函数去实现,一次性的把四个数字以及三个运算符传递过去(数是随机产生的,运算符是随机产生的),说到随机产生运算符下面是我写的随机产生运算符的例子,但是还是没有达到自己想要的要求,自己也上网查了一些资料,但是介绍的都不是很详细,看不太懂,而且大部分都是些怎么不让其产生重复的元素。
这样写的结果是有些情况永远也出不来而且这样写的结果就好像是每一个数组里面的元素就好像是商量好了一样,说第几个元素出来就第几个元素出来,请求老师指导一下.
还说四个数的运算吧!四个数随机产生能做到,但是怎么去计算,就没有一点思路了,曾经一个老师对我说过栈,自己这两天也看了关于栈的一些资料,觉得也不是那么难理解,我个人觉得栈就是一个箱子,就是现实中的一个能放一些东西的箱子,而箱子里的东西就相当于栈内的一些数据,你先放进去的数据要想拿出来就要先把后放进去的数据拿出来这样才能拿出来先放进去的数据,就好比现实中的箱子一样,你如果想拿到箱子最底层的东西就必须把箱子上层的东西先拿出来一样,这就是栈的先进后出,后进先出,同时,栈还有一些方法比如:
1.Push()在栈顶添加一个元素。
2.Pop()从栈顶删除一个元素,并返回该元素,如果栈是空的,就会抛出异常。
3.Peek()返回栈顶的元素,但不删除它。
4.Contains()确定某个元素是否存在,如果存在就返回true。
5.Count返回栈中的元素个数。
栈是理解了。应该说是通过逆波兰表达式了解到了栈,逆波兰表达式,第一次接触时真的很难懂,真的不明白,但是这两天看时竟然看的明白些了(这也许就是水到渠成吧),
看的明白些了知道了怎么去把中缀表达式转换为后缀表达式,但是转成逆波兰表达式之后应该怎么去计算呢,在网上也查了一些例子但是关于我学的语言的例子真的很少,找到了看的也不怎么明白,只知道在运算时仍然要用到栈,具体怎么去操作呢?不知道!
还有就是利用栈和逆波兰表达式是不是就可以实现所有数的混合运算(就是无论是三位,四位还是五位数的运算都能用栈和逆波兰表达式来解决?)?
再有就是定义一个函数能否多次的去调用这个函数,多次调用有什坏处吗?就比如我的上一篇博客,我定义的一个加法类,里面有一个加法运算,而我在计算四个数的加法运算时进行多次的调用这个加法类里面的加法运算,这样是可行的,但是这样的多次的去掉用总觉得哪地方有些不对,但是又不知道?
最后一个问题就是装饰模式与枚举以及结构了,装饰模式是这两天看的一本书上看到的,也有些例子,但是就是看不懂,看完之后又看了一遍仍然看不懂,不知道装饰模式是用来做什么的为什么要用装饰模式,什么时候去用装饰模式,用了装饰模式有什好处?枚举同样是不知其所以然,为什么要使用枚举啊?枚举就是列举出来所有的情况吗?要是这样的话枚举有什么好处啊?又什么时候去用枚举啊?
再有就是结构了,看了结构之后真的感觉没什么用,要什么结构啊,类完全可以代替结构,为什么还要去用结构呢,就是因为它在调用的时候比类,简单一些?
这样写的结果是有些情况永远也出不来而且这样写的结果就好像是每一个数组里面的元素就好像是商量好了一样,说第几个元素出来就第几个元素出来,请求老师指导一下.
还说四个数的运算吧!四个数随机产生能做到,但是怎么去计算,就没有一点思路了,曾经一个老师对我说过栈,自己这两天也看了关于栈的一些资料,觉得也不是那么难理解,我个人觉得栈就是一个箱子,就是现实中的一个能放一些东西的箱子,而箱子里的东西就相当于栈内的一些数据,你先放进去的数据要想拿出来就要先把后放进去的数据拿出来这样才能拿出来先放进去的数据,就好比现实中的箱子一样,你如果想拿到箱子最底层的东西就必须把箱子上层的东西先拿出来一样,这就是栈的先进后出,后进先出,同时,栈还有一些方法比如:
1.Push()在栈顶添加一个元素。
2.Pop()从栈顶删除一个元素,并返回该元素,如果栈是空的,就会抛出异常。
3.Peek()返回栈顶的元素,但不删除它。
4.Contains()确定某个元素是否存在,如果存在就返回true。
5.Count返回栈中的元素个数。
栈是理解了。应该说是通过逆波兰表达式了解到了栈,逆波兰表达式,第一次接触时真的很难懂,真的不明白,但是这两天看时竟然看的明白些了(这也许就是水到渠成吧),
看的明白些了知道了怎么去把中缀表达式转换为后缀表达式,但是转成逆波兰表达式之后应该怎么去计算呢,在网上也查了一些例子但是关于我学的语言的例子真的很少,找到了看的也不怎么明白,只知道在运算时仍然要用到栈,具体怎么去操作呢?不知道!
还有就是利用栈和逆波兰表达式是不是就可以实现所有数的混合运算(就是无论是三位,四位还是五位数的运算都能用栈和逆波兰表达式来解决?)?
再有就是定义一个函数能否多次的去调用这个函数,多次调用有什坏处吗?就比如我的上一篇博客,我定义的一个加法类,里面有一个加法运算,而我在计算四个数的加法运算时进行多次的调用这个加法类里面的加法运算,这样是可行的,但是这样的多次的去掉用总觉得哪地方有些不对,但是又不知道?
最后一个问题就是装饰模式与枚举以及结构了,装饰模式是这两天看的一本书上看到的,也有些例子,但是就是看不懂,看完之后又看了一遍仍然看不懂,不知道装饰模式是用来做什么的为什么要用装饰模式,什么时候去用装饰模式,用了装饰模式有什好处?枚举同样是不知其所以然,为什么要使用枚举啊?枚举就是列举出来所有的情况吗?要是这样的话枚举有什么好处啊?又什么时候去用枚举啊?
再有就是结构了,看了结构之后真的感觉没什么用,要什么结构啊,类完全可以代替结构,为什么还要去用结构呢,就是因为它在调用的时候比类,简单一些?
相关文章推荐
- 我所理解的编程
- 注意,ruby循环体定义的变量在结束时后,变量还存在
- android开发文档中有一个关于录音的类MediaRecord
- 4种定时器 Timer
- UESTC 764 失落的圣诞节 直接or线段树orRMQ
- 杭电 线段树 (个人整理(基础入门版))(多题练习.)(简单风格)
- 房子
- HTML 之 Embed兼容问题
- C#使用Graphics在窗体上绘图(加滚动条)
- LeetCode解题报告--Search for a Range
- 人生致命的3个经典问题
- 简单工厂模式、工厂模式以及抽象工厂模式
- hive行列转换
- iOS UIViewController 无法关闭自动旋屏(自动旋转、手动旋转、兼容IOS6之前系统)
- Android微信支付彻底扫坑
- HEVC 标准草案
- android学习第一站
- LeetCode(303)Range Sum Query - Immutable
- LeetCode(303)Range Sum Query - Immutable
- 【转】以过来人的身份聊聊实习招聘、秋招、春招(给应届毕业生)