2014年4月20日
摘要: new的3种形态: new operator , operator new , placement new 1.new operator: new操作符,像 + - * / && . :: ?: 等操作符一样,是语言内置的, 它 不能被重载,不能改变其行为。 它的行为包括分配内存的 operat... 阅读全文
posted @ 2014-04-20 20:09 水目沾 阅读(265) 评论(0) 推荐(0) 编辑
摘要: 前言: 看到许多面经说,有时候面试官要你自己当场用模板写出自己的vector容器。于是,我也琢磨着怎么自己动手写一个,可是本人才刚刚学C++模板编程不久,会的不多。不过,我恰好在C++ Primer上看到作者实现了自己的Queue,如果Queue自己实现了,相信Vector也不难了吧?当然这个Q... 阅读全文
posted @ 2014-04-20 14:11 水目沾 阅读(1091) 评论(0) 推荐(0) 编辑
  2014年4月17日
摘要: 1.索引与现实中的类比:数据库索引就好像是一本字典的目录,能加快数据库中记录的查询速度。比如我们要从一本字典中查找某个汉字。如果没有目录的话,意味着要将字典从头翻到尾一个字一个字的找,这样很浪费时间(平均要比较(n+1)/2次)。如果我们给个目录,先找在目录中找到这个的汉字。然后根据目录中该汉字的... 阅读全文
posted @ 2014-04-17 19:55 水目沾 阅读(1214) 评论(0) 推荐(0) 编辑
  2014年4月7日
摘要: 我想把博客搬到CSDN! 阅读全文
posted @ 2014-04-07 22:32 水目沾 阅读(128) 评论(0) 推荐(0) 编辑
  2014年4月6日
摘要: 由于图的基本操作的代码较多,我放到这一章来写。图可以用两种方法来存储,但是本人偏爱链表的表示方法,所以以下代码也都是是基于邻接链表的存储方式。 1 /* 2 以下存储结构参考严蔚敏版数据结构,不懂的可以翻阅查看 3 */ 4 const int UNDIGRAPH = 0; //无向图 5 const int DIGRAPH = 1; //有向图 6 const int MAX_VERTEX_NUM = 20; 7 8 typedef struct ArchNode 9 {10 int vertexIndex; //该弧指向顶点在图中顶... 阅读全文
posted @ 2014-04-06 18:56 水目沾 阅读(9109) 评论(2) 推荐(0) 编辑
摘要: 图的定义: 一个图G = (V,E)由顶点(vertex)集 V 合边(edge)集 E 组成。每条边(v,w)就是一个点对,其中v,w∈ V。有时也把边称作弧。如果点对是有序的,那么图就叫做有向图。顶点 v 和 w领接边 (v,w)∈ E。在一个具有边(v,w)从而具有边(w,v)的无向图,w和v邻接那v和w也邻接。图的基本术语:阶(Order):图G中顶集V的大小称作图G的阶。子图(Sub-Graph):G'称作图G=(V,E)的子图,当图G'=(V',E'),且V‘包含于V,E’包含于E。每个图都是本身的子图。生成子图(Spanning Sub-Graph 阅读全文
posted @ 2014-04-06 12:36 水目沾 阅读(832) 评论(0) 推荐(0) 编辑
  2014年4月4日
摘要: 红黑树简介: 红黑树是一棵二叉搜索树,它在每个结点上增加了一个存储位来表示结点的颜色,可以是RED 或 BLACK。通过对任何一条根到叶子的简单路径上各个结点的颜色进行约束,红黑树确保没有一条路径回避其他路径长处2倍,因而是近似平衡的。 树的每个结点包含 5 个属性:color,key,left,right和p。如果一个结点没有子结点或者父结点,则该结点相应的指针属性的值为NULL。我们可以把这些NULL视为指向二叉搜索树叶结点的指针,而把带关键字的结点视为树的内部结点。红黑树的性质: 一棵红黑树是满足下面红黑性质的二叉搜索树: 1.每个结点或是红色的,或是黑色的 2.根节点是黑色的... 阅读全文
posted @ 2014-04-04 10:27 水目沾 阅读(8573) 评论(0) 推荐(0) 编辑
  2014年3月31日
摘要: AVL树(平衡二叉树): AVL树本质上是一颗二叉查找树,但是它又具有以下特点:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。在AVL树中任何节点的两个子树的高度最大差别为一,所以它也被称为平衡二叉树。下面是平衡二叉树和非平衡二叉树对比的例图: 平衡... 阅读全文
posted @ 2014-03-31 20:21 水目沾 阅读(48743) 评论(1) 推荐(4) 编辑
摘要: 选择排序算法简介: 选择排序是一种简单直观的排序算法。它的工作原理如下。首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。 选择排序的主要优点与数据移动有关。如果某个元素位于正确的最终位置上,则它不会被移动。选择排序每次交换一对元素,它们当中至少有一个将被移到其最终位置上,因此对n个元素的表进行排序总共进行至多n-1次交换。在所有的完全依靠交换去移动元素的排序方法中,选择排序属于非常好的一种。选择排序算法复杂度分析: 选择排序的交换操作介于0和(n - 1)次之间... 阅读全文
posted @ 2014-03-31 15:08 水目沾 阅读(352) 评论(0) 推荐(0) 编辑
  2014年3月30日
摘要: 二叉查找树(Binary Search Tree),也称有序二叉树(ordered binary tree),排序二叉树(sorted binary tree),是指一棵空树或者具有下列性质的二叉树:若任意节点的左子树不空,则左子树上所有结点的值均小于它的根结点的值;任意节点的右子树不空,则右子树上所有结点的值均大于它的根结点的值;任意节点的左、右子树也分别为二叉查找树。没有键值相等的节点(no duplicate nodes)。二叉查找树的性质: 二叉查找树本质上是一种二叉树,所以上章讲的二叉树的性质他都有。二叉查找树的思想: 二叉排序树的查找过程和次优二叉树类似,通常采取二叉链表作为二.. 阅读全文
posted @ 2014-03-30 23:45 水目沾 阅读(2359) 评论(0) 推荐(0) 编辑