- 博客(13)
- 收藏
- 关注
原创 编程之美2.14 解法二
#include using std::endl;using std::cout;using std::cin;int c=0;
2012-07-24 09:29:19 625
转载 从B树中删除关键字
源于 http://blog.csdn.net/swordmanwk/article/details/6549480《算法导论》练习18.3-2: 请写出B-TREE-DELETE的伪代码。 与插入情况相对称,除了根结点外(根结点个数不能少于1),B树的关键字数不能少于t-1个。对于简单删除情况,如果我们定位到关键字处在某个结点中,如果这个结点中关键字个数恰好是t-1个,如果直接删除这
2012-07-16 09:00:11 1773
转载 C++中的private protected public区别
当private,public,protected单纯的作为一个类中的成员权限设置时:private: 只能由该类中的函数、其友元函数访问,不能被任何其他访问,该类的对象也不能访问. protected: 可以被该类中的函数、子类的函数、以及其友元函数访问,但不能被该类的对象访问 public: 可以被该类中的函数、子类的函数、其友元函数访问,也可以由该类的对象访问注:友元
2012-07-10 10:06:49 11895
转载 12.1-3
题目:给出一个非递归的中序树遍历算法。(提示:有两种方法,在较容易的方法中,可以采用栈作为辅助数据结构;在较为复杂的方法中,不采用栈结构,但假设可以测试两个指针是否相等。)算法思想:1.采用栈的话,先寻找最左边的节点,把经过的节点都存入栈中,第一个被弹出来的为最左节点,那么访问其右子树,对右子树也像前面一样遍历,整个流程跟递归一样。2.不采用栈的话,先是访问最左节点,然后访问其右子
2012-06-01 09:24:03 653
转载 算法导论 第十章 基本数据结构
10.1-6题目:说明如何用两个栈来实现一个队列,并分析有关队列操作的运行时间。解法:1.有两个栈s1和s2,先往s1内插入a,b,c,这做的都是enqueue操作。2.现在要做dequeue操作,即要得到a,这时可以将s1中的元素全部弹出并存入s2中,这时s2中元素的顺序(从底部到顶部)为c,b,a,这时做s2.pop()操作即可得到a。3.如果继续做enqueue操作,比如插入
2012-06-01 09:23:24 486
原创 第十二章-----第十三章 构造函数 复制构造函数 赋值操作符析构函数 static类成员
构造函数1.构造函数可以包含一个构造函数初始化列表:以一个冒号(:)开始,接着是一个亿逗号分隔的数据成员列表,每个数据成员后面跟一个放在圆括号中的初始化式。构造函数初始化式只在构造函数的定义中而不是在声明中指定。2.从概念上讲,可以认为构造函数分两个阶段执行:a 初始化阶段;b 普通的计算阶段。计算阶段由构造函数体中的所有语句组成。不管成员是否在构造函数初始化列表中显示初始化,类类型的数据
2012-05-11 17:30:28 613
原创 第十一章 泛型算法
标准库并没有为每种容器类型都定义实现这些操作的成员函数,而是定义了一组泛型算法:因为它们实现共同的操作,所以称之为“算法”;而“泛型”指的是它们可以操作在多种容器类型上-----不但可作业于vector或list这些标准库类型,还可用在内置数组类型、甚至其他类型的序列上。1.标准算法固有地独立于类型 与容器的类型无关,只在一点上隐式地依赖元素类型:必须能够对元素做比较运算。该算法的明
2012-05-09 11:06:18 576
原创 第九章-----第十章 容器和算法
第九章 顺序容器vector list deque1.要定义某种特殊的容器,必须在容器名后加一对尖括号,尖括号里面提供容器中存放的元素的类型:vector svec; //empty vector that can hold strings所有的容器类型都定义了默认构造函数,用于创建指定类型的空容器对象。默认构造函数不带参数。除了默认构造函数,
2012-05-08 18:51:55 494
原创 第三章 标准库类型
第二章1.为了兼容C语言,C++中所有的字符串字面值都有编译器自动在末尾添加一个空字符。2.引用是一种复合类型,通过在变量名前添加“&”符号来定义。复合类型是指用其他类型定义的类型。引用必须用与该引用同类型的对象初始化。 因为引用只是它绑定的对象的另个名字,作用在引用上的所有操作事实上都是作用在该引用绑定的对象上。 当引用初始化后,只要该引用存在,它就保
2012-04-28 13:55:13 420
转载 c++中char *和char []的区别
问题引入: 在实习过程中发现了一个以前一直默认的错误,同样char *c = "abc"和char c[]="abc",前者改变其内容程序是会崩溃的,而后者完全正确。 程序演示: 测试环境Devc++ 代码 #include using namespace std; main() { char *c1 = "abc"; char c2[
2012-04-26 16:00:54 444
转载 静态库、共享库、动态库的创建和使用
通常库分为:静态库,共享库,动态加载库,。下面分别介绍。一、 静态库:1.概念: 静态库就是一些目标文件的集合,以.a结尾。静态库在程序链接的时候使用,链接器会将程序中使用 到函数的代码从库文件中拷贝到应用程序中。一旦链接完成,在执行程序的时候就不需要静态库了。 由于每个使用静态库的应用程序都需要拷贝所用函数的代码,所以静态链接的文件会比较大。2.创
2012-04-26 09:23:10 380
原创 深入理解计算机系统-----之 第七章 链接
链接是将各种代码和数据部分收集起来并组合成为一个单一文件的过程,这个文件可被加载(或拷贝)到存储器并执行。链接可以执行于编译时,也就是在源代码被翻译成机器代码时;也可以执行于加载时,也就是在程序被加载器加载到存储器并执行时;甚至执行于运行时,由应用程序来执行。在早期的计算机系统中,链接是手动执行的。在现代系统中,链接是由叫链接器的自动执行的。7.1 编译器驱动程序 大多数编译系
2012-04-25 19:32:37 1060
原创 深入理解计算机体系结构-----之 第三章 程序的机器级表示
1.假设一个C程序,有两个文件p1.c和p2.c。我们在一台IA32机器上,用Unix命令行编译这些代码如下: unix> gcc -O1 -o p p1.c p2.c 实际上gcc命令调用了一系列程序,将源代码转化成可执行代码。首先,C预处理器扩展源代码,插入所有用#include命令指定的文件,并扩展所有用#define声明指定的宏。然后,编译器产生两个
2012-04-23 13:34:16 898
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人