08 2018 档案

摘要:哈夫曼树(Huffman Tree)带权路径长度(WPL):设二叉树有n个叶子结点,每个叶子结点带有权值Wk,从根节点到每个叶子结点的长度为Lk,则每个叶子结点带权路径长度之和就是(wk* Lk)求和最优二叉树或哈夫曼树:WPL最小的二叉树 哈夫曼树的构造:每次把权值最小的两棵二叉树合并 哈夫曼树的 阅读全文
posted @ 2018-08-27 16:59 Lucky小黄人^_^ 阅读(1494) 评论(0) 推荐(0)
摘要:简化版: 阅读全文
posted @ 2018-08-27 16:56 Lucky小黄人^_^ 阅读(1127) 评论(0) 推荐(0)
摘要:1 //用邻接表表示图 2 #include 3 #include 4 5 #define DataType char 6 #define MaxVertexNum 20 7 #define Vertex int 8 #define WeightType int 9 typedef struct GNode *PtrToGNode; 10 struct GNode 1... 阅读全文
posted @ 2018-08-27 16:55 Lucky小黄人^_^ 阅读(674) 评论(0) 推荐(0)
摘要:简单排序(前三种就是简单排序)void X_sort(ElementType A[ ], int N)1.大多数情况下,为简单期间,讨论从小到大的整数排序2.N是正整数3.只讨论基于比较的排序(> = <有定义)4.只讨论内部排序5.稳定性:任意两个相等的数据,排序前后的相对位置不发生改变6.没有一 阅读全文
posted @ 2018-08-27 16:51 Lucky小黄人^_^ 阅读(174) 评论(0) 推荐(0)
摘要://用邻接矩阵表示图#include #include #define MaxVertexNum 20typedef int WeightType;typedef char DataType;typedef st... 阅读全文
posted @ 2018-08-26 09:35 Lucky小黄人^_^ 阅读(277) 评论(0) 推荐(0)
摘要://用邻接表表示图#include #include #define DataType char#define MaxVertexNum 20#define Vertex int#define WeightTyp... 阅读全文
posted @ 2018-08-26 09:32 Lucky小黄人^_^ 阅读(268) 评论(0) 推荐(0)
摘要:以指针作为实参时,实参p传递给形参p1的其实是p的拷贝,所以在局部函数中改变形参p1的指向对身处主函数的p是无影响的,但是因为p1是p的拷贝,所以他们的指向是相同的,所以可以通过p1修改了那块内存的值。如果实参p... 阅读全文
posted @ 2018-08-25 20:40 Lucky小黄人^_^ 阅读(165) 评论(0) 推荐(0)
摘要:图(graph):表示“多对多”的关系六度空间理论(Six Degrees Separation)包含:1.一组顶点:通常用V(Vertex)表示顶点集合2.一组边:通常用E(edge)表示边的集合 边是顶点对:(v, w) 属于E, v , w 属于V 有向边<v, w>表示v 指向w的边(单行线 阅读全文
posted @ 2018-08-25 20:36 Lucky小黄人^_^ 阅读(936) 评论(0) 推荐(0)
摘要:集合的表示:1.集合运算:交、并、补、差,判定里两个元素是否属于某一个集合2.并查集:集合并、查某元素属于什么集合3.并查集可以用树结构表示,树的每个结点表示一个集合元素双亲表示法:(孩子指向双亲)这个树结构采用数组存储形式:数组每个元素的类型描述为: 集合运算(下面的完整代码中用简化版的查,并运算 阅读全文
posted @ 2018-08-24 18:26 Lucky小黄人^_^ 阅读(517) 评论(0) 推荐(0)
摘要:二叉树遍历的本质是怎么样把一个二维结构变成一个一维的线性序列的过程核心问题:二维结构的线性化从结点访问其左右儿子结点访问左儿子后,右儿子结点怎么办?需要一个寻出结构保存咱叔不访问的结点存储结构:堆栈、队列 队列实现:遍历从根节点开始,首先将根节点入队,然后开始执行循环:结点出队、访问该结点、其左右儿 阅读全文
posted @ 2018-08-24 09:48 Lucky小黄人^_^ 阅读(199) 评论(0) 推荐(0)
摘要:堆(优先队列)priority queue特殊的队列,取出元素的顺序是依照元素的优先权(关键字)大小,而出元素进入队列的先后顺序操作:查找最大值(最小值),删除(最大值) 数组:链表:有序数组:有序链表: 采用二叉搜索树? NO 采用完全二叉树 YES堆的连个特性结构性:用数组表示的完全二叉树:有序 阅读全文
posted @ 2018-08-23 22:42 Lucky小黄人^_^ 阅读(1868) 评论(0) 推荐(0)
摘要:1 #include 2 #include 3 4 typedef struct TreeNode{ 5 int value; 6 struct TreeNode* Left; 7 struct TreeNode* Right; 8 }TreeNode; 9 10 void printTree(TreeNode* T, int... 阅读全文
posted @ 2018-08-22 22:22 Lucky小黄人^_^ 阅读(336) 评论(0) 推荐(0)
摘要:1 #include 2 #include 3 4 typedef struct TreeNode{ 5 int value; 6 struct TreeNode* Left; 7 struct TreeNode* Right; 8 }TreeNode; 9 10 void printTree(TreeNode* T, int depth); 1... 阅读全文
posted @ 2018-08-22 19:16 Lucky小黄人^_^ 阅读(2115) 评论(0) 推荐(0)
摘要:二叉树度为二的数二叉树的子树有左右之分特殊二叉树1.斜二叉树(类似链表)2.完美二叉树(满二叉树)(每个结点都有里两个儿子,除了最底下的结点的叶节点没有儿子3.完全二叉树:从上往下,从左往右编号,与满二叉树必须完全一致只能少最后面的几个结点,不能有空缺 二叉树的几个重要性质1.一个二叉树第i层的最大 阅读全文
posted @ 2018-08-21 18:09 Lucky小黄人^_^ 阅读(358) 评论(0) 推荐(0)
摘要:串的定长顺序存储#define MAXSTRLEN 255,//超出这个长度则超出部分被舍去,称为截断 串的模式匹配: 串的定义:0个或多个字符组成的有限序列S = 'a1a2a3…….an ' n = 0时为空串串的顺序存储结构:字符数组,串的长度就是数组末尾‘\0'前面的字符个数数组需在定义时确 阅读全文
posted @ 2018-08-20 12:24 Lucky小黄人^_^ 阅读(1991) 评论(0) 推荐(0)
摘要:1 #include 2 #include 3 4 typedef int ElementType; 5 6 typedef struct { 7 int element[16]; 8 int length; 9 }StaticTable; 10 11 12 //二分法查找 13 int BinarySearch(StaticTable* Tbl,... 阅读全文
posted @ 2018-08-20 11:46 Lucky小黄人^_^ 阅读(1558) 评论(0) 推荐(0)
摘要:树客观世界中许多食物存在层次关系:人类社会家谱、社会组织结构、文件路径分层次组织在管理上具有更高的效率查找:静态查找:集合中的记录是固定不变的哨兵,第一个字符放长度,在第零号位置存放我们要查找的字符,从后往前查找动态查找:集合中的记录是动态变化的静态查找方法一:顺序查找:(哨兵) 方法二、二分查找( 阅读全文
posted @ 2018-08-20 11:44 Lucky小黄人^_^ 阅读(729) 评论(0) 推荐(0)
摘要:1 //两个一元多项式的相乘 2 3 #include 4 #include 5 6 struct PolyNode { 7 int coefficient; 8 int exponent; 9 struct PolyNode* next; 10 }; 11 12 typedef struct PolyNode* Po... 阅读全文
posted @ 2018-08-19 19:25 Lucky小黄人^_^ 阅读(468) 评论(0) 推荐(0)
摘要:初始化的函数也可是这样: 阅读全文
posted @ 2018-08-19 16:08 Lucky小黄人^_^ 阅读(456) 评论(0) 推荐(0)
摘要:if(!p) //是!p而不是p return ERROR; 阅读全文
posted @ 2018-08-18 18:26 Lucky小黄人^_^ 阅读(225) 评论(0) 推荐(0)
摘要:以指针作为实参时,实参p传递给形参p1的其实是p的拷贝,所以在局部函数中改变形参p1的指向对身处主函数的p是无影响的,但是因为p1是p的拷贝, 所以他们的指向是相同的,所以可以通过p1修改了那块内存的值。如果实参p的指向为空,也就是说p是一个空指针的话,那么它就没有指向某块内存, 形参也就无法操作p 阅读全文
posted @ 2018-08-14 22:12 Lucky小黄人^_^ 阅读(1802) 评论(0) 推荐(0)
摘要:1.C语言里的struct是不能包含成员函数的,只能有数据成员2.C语言struct定义变量只能用一下两种方式:struct { ... } x, y, z;struct point pt;直接point pt;是错误的定义;pt3 = { 3, 5 }; //错误pt2 = makePint(1, 阅读全文
posted @ 2018-08-11 12:12 Lucky小黄人^_^ 阅读(314) 评论(0) 推荐(0)
摘要:数据类型在计算机中,因为内存空间是有限的,所以不同的类型的数据分配的内存空间大小不同数据类型是指一组性质相同的值的集合及定义在此集合上的一些操作的总称 在C语言中,按照值的不同,数据类型分为两类原子型:不可以再分解的基本类型,包括整型,实型等结构性:有若干个类型组合而成,是可以再分的。例如:整型数组 阅读全文
posted @ 2018-08-11 12:09 Lucky小黄人^_^ 阅读(801) 评论(0) 推荐(0)
摘要:int len; int i = 0; printf("please enter the size that you want: "); scanf("%d", &len); int *pArr = (int*)malloc(sizeof(int) * len); printf("please cin the elements:\n"); for(i = 0;... 阅读全文
posted @ 2018-08-11 11:50 Lucky小黄人^_^ 阅读(217) 评论(0) 推荐(0)
摘要:对分查找 欧几里得算法求最大公因数: 阅读全文
posted @ 2018-08-11 11:42 Lucky小黄人^_^ 阅读(164) 评论(0) 推荐(0)
摘要:逻辑结构:1.集合结构:数据元素只是同属于一个集合2.线性结构:一对一关系3.树形结构:一对多的关系4.图形结构:数据元素是多对多的关系物理结构:又叫存储结构,是指数据的逻辑结构在计算机中的存储形式顺序存储结构:数组结构,连续的存储单元,数据的逻辑关系和物理关系一致链式存储结构:任意的存储单元,数据 阅读全文
posted @ 2018-08-11 11:26 Lucky小黄人^_^ 阅读(430) 评论(0) 推荐(0)
摘要:1.指定精度:cout.pricison(args),args可不写,表示使用当前精度。 setprecision(args).他们包含在头文件iomanip中2.其他操作: 3. 4.未格式化输入输出 ... 阅读全文
posted @ 2018-08-06 18:18 Lucky小黄人^_^ 阅读(178) 评论(0) 推荐(0)
摘要:子类对象可以自由使用父类的public成员类型转换:1.从派生类向基类的转换只对指针或引用类型有效。2.基类向派生类不存在隐式转换3.通常能够将一个 派生类对象拷贝、移动、或赋值给一个基类对象,但是这种操作只处理派生类对象的基类部分,派生类部分会被切掉,被丢弃。4.对于代码中的某个给定结点来说,如果 阅读全文
posted @ 2018-08-06 17:56 Lucky小黄人^_^ 阅读(171) 评论(0) 推荐(0)
摘要:子类对象可以自由使用父类的public成员类型转换:1.从派生类向基类的转换只对指针或引用类型有效。2.基类向派生类不存在隐式转换3.通常能够将一个 派生类对象拷贝、移动、或赋值给一个基类对象,但是这种操作只处理... 阅读全文
posted @ 2018-08-06 17:48 Lucky小黄人^_^ 阅读(125) 评论(0) 推荐(0)
摘要:14.8函数调用运算符"()"1.函数调用运算符必须是成员函数,一个类可以定义多个不同版本的调用运算符,但是他们相互之间应该在参数数量或返回类型上有所区别。定义了调用运算符的类的对象称之为“函数对象”。此对象类似于函数名。2. for_each只接受一元谓词 如:for_each(vs.begin, 阅读全文
posted @ 2018-08-03 10:23 Lucky小黄人^_^ 阅读(2338) 评论(0) 推荐(0)
摘要:14.重载运算与类型转换14.1基本概念1.重载的运算符是具有特殊名字的函数,由operator和需要重载的运算符组成的函数名,该函数同样需要返回类型、参数列表和函数体。且参数列表必须包含类成员或对象,我们不能重载只包含内置类型的运算符,因为他们都是编译器已经定义好了的。2.成员运算符必须参数列表第 阅读全文
posted @ 2018-08-03 10:22 Lucky小黄人^_^ 阅读(192) 评论(0) 推荐(0)
摘要:13.5动态内存管理类1.某些类需要自己进行内存分配,这些类一般来说必须定义自己的拷贝控制成员来管理分配的内存。2.如果没有可用空间,vector就会重新分配空间,且将已有元素移动(或拷贝,但这里是移动)到空间中,释放旧空间,并添加新元素。 13.6对象移动13.6.1右值引用1.我们可以将一个co 阅读全文
posted @ 2018-08-03 10:20 Lucky小黄人^_^ 阅读(540) 评论(0) 推荐(0)
摘要:13.2控制拷贝和资源管理1.如果类的每个对象相互独立,不共享除静态成员以外的元素,那么称之为类值的;如果如果类的每个对象不是相互独立,共享了除静态成员以外的元素,那么称之为类指针的。2.大多数赋值运算符组合了析构函数函数拷贝构造函数的工作,赋值运算符还必须考虑自赋值的正确性。3.类指针的类最好是用 阅读全文
posted @ 2018-08-03 10:17 Lucky小黄人^_^ 阅读(112) 评论(0) 推荐(0)
摘要:13.1.2 拷贝赋值运算符1.拷贝赋值运算符就是重载赋值运算符调用operaotr =;如:Foo& operator = (const Foo&);返回值必须为引用类型2.拷贝赋值运算符会将右侧运算符对象的每个非static成员赋予左侧对象,静态数据成员是公有的无须拷贝3.只有整形常量数据成员才 阅读全文
posted @ 2018-08-03 10:10 Lucky小黄人^_^ 阅读(227) 评论(0) 推荐(0)
摘要:1.拷贝构造函数也是一个构造函数,用来构造对象,只有在对象定义时起作用,其第一个参数是自身类型的引用,其他任何参数均带有默认值.(如果第一个参数不是引用类型,因为构造拷贝对象时必须调用拷贝构造函数,那么连拷贝构造函数都必须调用拷贝构造函数,结果可想而知,调用永远也不会成功) 2.如果我们没有为一个类 阅读全文
posted @ 2018-08-03 10:06 Lucky小黄人^_^ 阅读(468) 评论(0) 推荐(0)
摘要:1.拷贝构造函数也是一个构造函数,用来构造对象,只有在对象定义时起作用,其第一个参数是自身类型的引用,其他任何参数均带有默认值.(如果第一个参数不是引用类型,因为构造拷贝对象时必须调用拷贝构造函数,那么连拷贝构造... 阅读全文
posted @ 2018-08-03 09:55 Lucky小黄人^_^ 阅读(141) 评论(0) 推荐(0)