2012年3月20日
摘要: View Code 1 #include <iostream> 2 #include <deque> 3 using namespace std; 4 /* 5 1.二叉树三种周游(traversal)方式(也就是三种遍历) 6 2.怎样从顶部开始逐层打印二叉树结点数据 (层次遍历) 7 3.如何判断一棵二叉树是否是平衡二叉树 8 4.设计一个算法,找出二叉树上任意两个节点的最近共同父结点,复杂度如果是O(n2)则不得分。 9 5.如何不用递归实现二叉树的前序/后序/中序遍历? 10 6.在二叉树中找出和为某一值的所有路径 11 7.怎样编写一个程序,把... 阅读全文
posted @ 2012-03-20 10:54 笔记吧... 可能只有自己看得懂 阅读(586) 评论(0) 推荐(1) 编辑
摘要: 问题由来:输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。要求不能创建任何新的结点,只调整指针的指向。10/ /614/ / / /48 12 16转换成双向链表4=6=8=10=12=14=16。————————————————————————————————————————————————————————查询了一些资料,有人说这问题就是二叉树的线索化过程。这里我个人觉得不是。理由如下:1、线索二叉树中,确实其中存在的是双向线索链表,理解为一种需要简单处理的双向线索链表;(如:当右指针为线索时,直接继承后继,如果右指针为子树时,需要递归找寻右子树的最左边子节点的处理)2、双向链表 阅读全文
posted @ 2012-03-20 10:52 笔记吧... 可能只有自己看得懂 阅读(3235) 评论(3) 推荐(0) 编辑
  2012年3月19日
摘要: 纯虚函数是实现函数多态的技术手段。View Code 1 #include <iostream> 2 #include <string> 3 using namespace std; 4 5 class Animal 6 { 7 public: 8 virtual void play() = 0; // 纯虚函数 9 };10 11 class Dog : public Animal12 {13 public:14 virtual void play()15 {16 cout << "狗狗叫" << endl;17 }18 } 阅读全文
posted @ 2012-03-19 22:13 笔记吧... 可能只有自己看得懂 阅读(161) 评论(0) 推荐(0) 编辑
摘要: 外观模式的提出:为复杂的子系统调用提供一个统一的入口,使子系统与客户的耦合度降低,且客户端调用非常方便。就像在网站浏览时,开发者为我们设定的主页一样。这样我们就无需去记住所有的子网页的URL,只需要记得主页的URL。这样我们同样可以访问该网站的所有资源,而且还无需记得那么多复杂的URL。两者的道理是一样的。View Code 1 #include <iostream> 2 #include <string> 3 using namespace std; 4 // 外观模式 5 class Light 6 { 7 public: 8 void on() 9 {10 ... 阅读全文
posted @ 2012-03-19 18:28 笔记吧... 可能只有自己看得懂 阅读(125) 评论(0) 推荐(0) 编辑
摘要: 复制构造函数发生的三种情况: 1、一个类对象通过另外一个对象进行初始化时;2、一个类对象以值传递的方式传入函数体中时; 3、一个类对象以值传递的方式从函数返回时;————————————————————————————————————————————————————————————复制构造函数的作用:依次复制每个非静态数据成员来给类对象,叫做复制构造过程。View Code 1 #include <iostream> 2 #include <string> 3 using namespace std; 4 class Test 5 { 6 public: 7 char 阅读全文
posted @ 2012-03-19 16:01 笔记吧... 可能只有自己看得懂 阅读(194) 评论(0) 推荐(0) 编辑
摘要: 常见的过程模型有:瀑布模型、增量过程模型、演化过程模型、螺旋模型、协同模型。1、瀑布模型 它提供了一个系统的、顺序的软件开发方法。从用户需求规格说明开始,通过计划、建模、构建和部署的过程,最终提供一个完整的软件并提供持续的技术支持。 沟通 策划 建模 构建 部署 需求分析 项目估计或者计划 设计分析 编码 测试交付瀑布模型的一个变体,称为V模型。如下图所示: 阅读全文
posted @ 2012-03-19 14:34 笔记吧... 可能只有自己看得懂 阅读(222) 评论(0) 推荐(0) 编辑
摘要: 所谓原型模型,就是需要创建大量相同或者相似对象时,可以通过对一个已有对象的复制获取更多的对象。也就是所谓clone。代码如下:View Code 1 #include <iostream> 2 #include <string> 3 using namespace std; 4 // 原型抽象类 5 class CPrototype 6 { 7 public: 8 CPrototype(){} 9 virtual ~CPrototype(){}10 virtual CPrototype* Clone() = 0;11 void fun()12 {13 ... 阅读全文
posted @ 2012-03-19 11:29 笔记吧... 可能只有自己看得懂 阅读(138) 评论(0) 推荐(0) 编辑
摘要: public: 类对象和类函数都可以访问;private:类对象不可以访问,类成员函数可以访问;protected:如果成员对象或者函数在本类中具有protected,对于成员函数而言具有public,对于类对象而言具有private。// 所谓本类就是所在类在本类的讨论中来看,protected具有和private同样的特性。区别:在继承中可以体现出来。——————————————————————————————————————————————————————————————继承关系public继承:基类的public和protected成员的访问属性在派生类中保持不变,但基类的privat 阅读全文
posted @ 2012-03-19 11:25 笔记吧... 可能只有自己看得懂 阅读(265) 评论(0) 推荐(0) 编辑
摘要: 范围\目的创建型模式结构型模式行为型模式类模式工厂方法模式(类)适配器模式解释器模式模板方法模式对象模式抽象工厂模式建造者模式原型模式单例模式(对象)适配器模式桥接模式组合模式装饰模式外观模式享元模式代理模式职责链模式命令模式迭代器模式中介者模式备忘录模式观察者模式状态模式策略模式访问者模式以上的表格是由GoF组织提出的23种常用的设计模式。设计模式是从许多优秀的软件系统中总结出的成功的、能够实现可维护性复用的设计方案,使用这些方案将避免我们做一些重复性的工作,而且可以设计出高质量的软件系统。设计模式(Design Pattern)概念为:是一套被反复使用、多数人知晓的、经过分类编目的、代码设 阅读全文
posted @ 2012-03-19 10:58 笔记吧... 可能只有自己看得懂 阅读(162) 评论(0) 推荐(0) 编辑
  2012年3月18日
摘要: 观察者模式是一种经常使用的设计模式。在软件系统中对象并不是孤立存在的,一个对象行为的改变可能导致一个或者多个其他与之存在依赖关系的对象行为发生改变。使用一种触发的技术使得相互相关的对象发生相应的动作。意图: 定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时, 所有依赖于它的对象都得到通知并被自动更新。适用性: 当一个抽象模型有两个方面, 其中一个方面依赖于另一方面。将这二者封装在独立的对象中以使它们可以各自独立地改变和复用。 当对一个对象的改变需要同时改变其它对象, 而不知道具体有多少对象有待改变。 当一个对象必须通知其它对象,而它又不能假定其它对象是谁。换言之, 你不希望这些对象 阅读全文
posted @ 2012-03-18 10:50 笔记吧... 可能只有自己看得懂 阅读(146) 评论(0) 推荐(0) 编辑