
数据结构
文章平均质量分 74
hola_f
这个作者很懒,什么都没留下…
展开
-
数据结构-不相交集ADT
若对于每一对元素(a,b),a、b属于S,aRb或者为true或者为false,则称在集合S上定义关系R。如果aRb是true,那么我们说a与b有关系。 等价关系是满足下列三个性质的关系R: 自反性:对于所有的a属于S,aRa;对称性:aRb当且仅当bRa;传递性:若aRb且bRc,则aRc; ’ 一个元素a属于S的等价类是S的一个子集,它包含所有与a有关的元素。 所以,不转载 2016-08-21 16:16:39 · 975 阅读 · 0 评论 -
数据结构-二叉查找树
树:树是一个大部分操作的运行时间平均为O(log n)的一种数据结构。 树的递归定义为:一棵树是一些节点的集合。这些集合可以是空集;若为非空,则一棵树由称作根的节点r以及0个或多个非空的(子)树T1、T2、T3、...、Tk组成。这些子树中每一棵的根都被来自根r的一天有向边所连接(可以发现一棵树是N个节点和N-1条边的集合)转载 2016-08-14 14:14:58 · 327 阅读 · 0 评论 -
数据结构-AVL树
AVL树:带有平衡条件的二叉查找树,要求每个节点的左子树和右子树的高度最多差1。 通常,AVL树通过旋转操作保持平衡条件。 不平衡的可能情况: 节点a的左儿子左子树进行插入节点a的右儿子右子树进行插入节点a的左儿子右子树进行插入节点a的右儿子左子树进行插入 其中情况1、2都是通过单旋转就可以解决了,而情况3、4需要通过双旋转来解决。 AVL树的声明: struct avlNode;转载 2016-08-14 14:38:54 · 252 阅读 · 0 评论 -
数据结构-散列
散列(hashing):是一种以常数平均时间执行插入、删除和查找的技术。 散列表(hash table):是包含有关键字的具有固定大小的数组。表的大小记作table-size。每个关键字被映射到从0到table-size-1这个范围中的某个数,并且被放到适当的单元中。这个映射叫作散列函数(hash function)。 散列函数:一个好的方法为保证表的大小为素数。 一个好的散列函数: in转载 2016-08-14 15:12:34 · 384 阅读 · 0 评论 -
数据结构-二叉堆
二叉堆(优先队列)具有结构性和堆序性 结构性为:二叉堆是一棵完全被填满的二叉树,有可能的例外是在底层,底层上的元素从左到右填入。这样的树称为完全二叉树。二叉堆可以用数组表示,对于数组中任意位置i上的元素,其左儿子在位置2i上,右儿子在位置2i+1上,父亲则在i/2上(小于i/2的最小整数)。 堆序性为:使操作被快速执行的性质称为堆序性。在一个堆中,对于每个节点x,x的父节点中的转载 2016-08-14 15:26:43 · 448 阅读 · 0 评论 -
数据结构-左式堆
左式堆:同二叉堆一样具有结构性和堆序性。惟一的区别是:左式堆不是理想平衡的,而实际上是趋于不平衡的。 零路径长(NPL(x)):从节点x到一个没有两个儿子节点的最短路径长。 左式堆要求对于堆中的每一个节点x,左儿子的零路径长至少与右儿子的零路径长一样大。 左式堆的结构声明:struct treeNode; typedef struct treeNode *priorityQueue; s转载 2016-08-14 15:32:48 · 484 阅读 · 0 评论