摘要:首先,我们要理解什么是逆波兰表达式?逆波兰表达式是将我们平常的运算表达式写出计算机可以理解的表达式,譬如 正常的表达式(中缀表达式) > 逆波兰表达式(后缀表达式) 2+3 > 2 3 + 3+2*4 > 3 2 4 * + (2+3)*(5-1) > 2 3 + 5 1 - * 它的运行顺序是:将 阅读全文
双向循环链表实践
2017-08-14 16:22 by 猪牙哥, 235 阅读, 0 推荐, 收藏, 编辑
摘要:题目: 要求实现用户输入一个数使得26个字母的排列发生变化,例如用户输入3,输出结果: DEFGHIJKLMNOPQRSTUVWXYZABC 同时需要支持负数,例如用户输入-3,输出结果: XYZABCDEFGHIJKLMNOPQRSTUVW 首先,我们要明白什么叫双向循环链表,双向,也就是有pre 阅读全文
快速找到未知长度单链表的中间节点
2017-08-14 13:12 by 猪牙哥, 484 阅读, 0 推荐, 收藏, 编辑
摘要:在讨论之前,我们首先首先要明白,什么是单链表? 单链表:链接方式存储的线性表 单链表的结点结构 ┌──┬──┐ │data│next│ └──┴──┘ data域--存放结点值的数据域 next域--存放结点的直接后继的地址(位置)的指针域(链域)注意: ①链表通过每个结点的链域将线性表的n个结点按 阅读全文
java的ArrayList(线性表)和LinkedList(双向链表)的深入学习
2017-08-14 09:48 by 猪牙哥, 1124 阅读, 0 推荐, 收藏, 编辑
摘要:java的ArrayList和LinkedList的实现原理是完全不一样的,一个是用数组,而另一个则是用节点(Node)。 我们经常说,如果查询多,那就用ArrayList,而如果删除或者添加,那就用LinkedList。为什么要这样子,他们两者之间的区别又是怎样的,而今天我们就要从源码来分析他们 阅读全文
23种设计模式中的访问者模式
2017-08-09 16:12 by 猪牙哥, 148 阅读, 0 推荐, 收藏, 编辑
摘要:访问者模式:对于一组对象,在不改变数据结构的前提下,增加作用于这些结构元素新的功能。 适用于数据结构相对稳定,它把数据结构和作用于其上的操作解耦,使得操作集合可以相对自由地演化。 优点: 符合单一职责原则 扩展性良好 有益于系统的管理和维护 缺点: 增加新的元素类变得很困难 破坏封装性 适用场合: 阅读全文
23种设计模式中的原型模式
2017-08-09 16:02 by 猪牙哥, 182 阅读, 0 推荐, 收藏, 编辑
摘要:原型模式:通过复制现有实例来创建新的实例,无须知道相应类的信息。 个人见解:在大量循环时,需要初始化对象,用 原型模式能节省大量的初始化所花费的时间,值得一谈的是浅复制和深复制 浅复制:Object类的clone方法只会拷贝对象中的基本的数据类型,对于数组、容器对象、引用对象等都不会拷贝 代码 在这 阅读全文
23种设计模式中的备忘录模式
2017-08-09 15:13 by 猪牙哥, 232 阅读, 0 推荐, 收藏, 编辑
摘要:备忘录模式:在不破坏封装的前提下,存储关键对象的重要状态,从而可以在将来把对象还原到存储的那个状态 个人见解:可以参考Android中的Activity 或者简单点可以看SharedPreferences 阅读全文
23种设计模式中的中介者模式
2017-08-09 15:01 by 猪牙哥, 164 阅读, 0 推荐, 收藏, 编辑
摘要:中介者模式:用一个中介对象来封装一系列的对象交互。 中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互 优点: 通过将对象彼此解耦,可以增加对象的复用性 通过将控制逻辑集中,可以简化系统维护 可以让对象之间所传递的消息变得简单而且大幅减少 提高系统的灵活性,使得系 阅读全文
23种设计模式中的解释器模式
2017-08-09 14:50 by 猪牙哥, 142 阅读, 0 推荐, 收藏, 编辑
摘要:解释器模式:定义一个语法, 定义一个解释器,该解释器处理该语法句子 将某些复杂问题,表达为某种语法规则,然后构建解释器来解释处理这类句子。 阅读全文
23种设计模式中的蝇量(享元)模式
2017-08-09 14:46 by 猪牙哥, 210 阅读, 0 推荐, 收藏, 编辑
摘要:蝇量(享元)模式:通过共享的方式高效地支持大量细粒度的对象。 个人见解:实际上是在做大量for循环时,没必要将这些数据封装成一个对象,直接将对象的方法抽象出来,直接调用(静态),是一个优化的过程,,节省了大量的初始化的空间和时间 阅读全文