摘要:
根据二叉树的后序遍历以及中序遍历还原二叉树【题目】假设一棵二叉树的后序遍历序列为 DGJHEBIFCA ,中序遍历序列为 DBGEHJACIF ,则其前序遍历序列为 ( ) 。A. ABCDEFGHIJB. ABDEGHJCFIC. ABDEGHJFICD. ABDEGJHCFI由题,后序遍历的最后一个值为A,说明本二叉树以节点A为根节点(当然,答案中第一个节点都是A,也证明了这一点)下面给出整个分析过程【第一步】由后序遍历的最后一个节点可知本树根节点为【A】加上中序遍历的结果,得知以【A】为根节点时,中序遍历结果被【A】分为两部分【DBGEHJ】【A】【CIF】于是作出第一幅图如下【第二步】
阅读全文
posted @ 2012-09-09 14:51
bitbit
阅读(593)
推荐(0)
编辑
摘要:
CRT运行时库1)运行时库就是 C run-time library,是 C 而非 C++ 语言世界的概念:取这个名字就是因为你的 C 程序运行时需要这些库中的函数.2)C 语言是所谓的“小内核”语言,就其语言本身来说很小(不多的关键字,程序流程控制,数据类型等);所以,C 语言内核开发出来之后,Dennis Ritchie 和 Brian Kernighan 就用 C 本身重写了 90% 以上的 UNIX 系统函数,并且把其中最常用的部分独立出来,形成头文件和对应的 LIBRARY,C run-time library 就是这样形成的。3)随后,随着 C 语言的流行,各个 C 编译器的生产商
阅读全文
posted @ 2012-09-09 14:49
bitbit
阅读(992)
推荐(0)
编辑
摘要:
classNoncopyable{protected:Noncopyable(){};~Noncopyable(){};private:Noncopyable(constNoncopyable&src);constNoncopyable&operator=(constNoncopyable&src);//声明一下就行了};为了禁用编译器自动提供的功能,你必须将相关的成员函数声明为 private 的,同时不要实现它。这里使用一个像 noncopyable 这样的类来完成这一工作。
阅读全文
posted @ 2012-09-09 14:45
bitbit
阅读(323)
推荐(0)
编辑
摘要:
软件系统设计思路 最近有学弟问我,拿到一个软件需求,但是却不知道怎么才能更好地架构好整个系统,在此,我简单地根据我的经验介绍一下我是怎么设计一个软件系统的吧。当然,这只是我的一个简单的思路而已,真正涉及到一个大的软件项目,可能还要复杂很多很多。 要设计一个面向对象的系统,建议遵循如下思路:1. 调研,完成一份详细的需求文档 (1)系统要实现什么功能 (2)性能上有什么特别的要求 (3)哪些是技术难点,可以的话对技术难点首先测试攻关2. 确定系统的运行环境 (1)系统运行的操作系统:widows,linux,unix等 (2)使用何种编程语言:c/c++,java,C# 等 (3)使用何种界..
阅读全文
posted @ 2012-09-09 14:40
bitbit
阅读(1532)
推荐(0)
编辑
摘要:
类设计五项基本原则原则:单一职责原则开放封闭原则Liskov替换原则依赖倒置原则接口隔离原则第8章 单一职责原则 ( SRP )就一个类而言.应该仅有一个引起它变化的原因. 一个class就其整体应该只提供单一的服务 如果一个class提供多样的服务,那么就应该把它拆分,反之,如果一个在概念上单一的功能却由几个class负责,这几个class应该合并 第9章 开放-封闭原则 ( OCP )软件实体(类. 模块. 函数等等)应该是可以扩展的. 但是不可修改的.例如.把一个类的功能抽象出来.形成一个抽象接口.然后对该接口编程.这样当需要扩展时只要从该接口派生一个新类就可以完成扩展的功能.看一个例.
阅读全文
posted @ 2012-09-09 14:34
bitbit
阅读(973)
推荐(0)
编辑
摘要:
C++虚函数表解析 C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。关于虚函数的使用方法,我在这里不做过多的阐述。大家可以看看相关的C++的书籍。在这篇文章中,我只想从虚函数的实现机制上面为大家 一个清晰的剖析。当然,相同的文章在网上也出现过一些了,但我总感觉这些文章不是很容易阅读,大段大段
阅读全文
posted @ 2012-09-09 13:58
bitbit
阅读(196)
推荐(0)
编辑
摘要:
C++多态性C++中的多态(虽然多态不是C++所特有的,但是C++中的多态确实是很特殊的)分为静多态和动多态(也就是静态绑定和动态绑定两种现象),静动的区别主要在于这种绑定发生在编译期还是运行期,发生在编译期的是静态绑定,也就是静多态;发生在运行期的则是动态绑定,也就是动多态。静多态可以通过模板和函数重载来实现(之所说C++中的多态主要还是因为模板这个东西),下面举两个例子:1)函数模板template <typename T>T max(const T& lsh, const T& rhs) { return (lsh > rhs) ? lsh : rhs;
阅读全文
posted @ 2012-09-09 13:54
bitbit
阅读(1322)
推荐(1)
编辑