数据结构
zhangxixi1992
正在努力进步的IT女,欢迎大家多多指教~ >.<
展开
-
队
队是先进先出的数据结构。需要一头一尾两个指针,front和rear。template<class T> class queue { public: virtual ~queue() {} virtual bool empty() const = 0; // return true iff queue is empty v原创 2015-11-16 17:38:15 · 417 阅读 · 0 评论 -
堆栈
堆栈 堆栈是后进先出的数据结构,会有一个指向堆栈顶部元素的指针stacktop。 堆栈可以采用数组存储或者链表存储。template<class T> class stack{ virtual ~stack()=0; virtual bool empty()=0; virtual int size()=0; virtual void pop()=0; vi原创 2015-11-16 15:59:05 · 319 阅读 · 0 评论 -
字典
字典是由一些形如(k,v)的数对所组成的集合,其中k是关键字,v是与关键字k对应的值。任意两个数对,其关键字都不等。字典的关键字是有序的。可以仅按照字典元素本身的关键字来访问元素,即随机访问;也可以按照关键字递增的顺序来依次访问字典中的元素,即顺序访问。 多重字典,允许两个或更多的数对可以具有相同的关键字。template<class K, class E> class dictionary {原创 2015-11-17 11:18:07 · 295 阅读 · 0 评论 -
散列表(HashTable)
散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。 散列函数能使对一个数据序列的访问过程更加迅速有效,通过散列函数,数据元素将被更快地定位。 散列表通过将数据的关键值经过散列函数处理得到值即为散列表中对应的散列数组下原创 2015-11-17 17:11:37 · 331 阅读 · 0 评论 -
二叉树和其他树
路径长度:根节点到任何节点有唯一路径,路径所经过的边数,称为路径长度。 节点深度:根节点到任一节点的路径长度,即所谓该节点的深度。 节点高度:该节点到叶子节点的路径长度。 二叉树和树的根本区别: 二叉树的每个元素都恰好有两棵子树。而树的每个元素可有任意数量的子树。 在二叉树中,每个元素的子树都是有序的,有左子树和右子树之分。树的子树是无序的。二叉树的特性 一棵二叉树有n个元原创 2015-11-25 17:04:28 · 807 阅读 · 0 评论 -
图的基础算法-广度优先搜索/深度优先搜索
图有矩阵存储和链表存储两种。这里采用链表存储。 参考《算法导论》上面的做法,首先定义图结点的结构。为了跟踪算法的进展,广度优先搜索在概念上将每个结点涂成白色。在算法推进过程中,结点的颜色可能变成灰色或者黑色。在搜索过程中,第一次遇到一个结点时,表示该结点已被发现,此时该结点的颜色将从白色变成灰色。灰色或黑色结点都是已经被发现过的结点。所有与黑色结点邻接的结点都已经被发现。对于灰色结点来说,其邻接结原创 2016-01-22 17:25:05 · 382 阅读 · 0 评论 -
数组
数组名的值是一个指针常量。 下标引用 int array[10]; int *ap=array+2; ap[0]//除了优先级职位,下标引用和间接访问完全相同。ap[0]等价于*(ap+(0))。 ap[6]//等价于 *(ap+6) ap[-1]//等价于 *(ap-1),也就是array[1] 指针与下标。指针比下标更有效率, //每一次循环都要做乘法运算:array+a*sizeof(int原创 2016-01-28 12:39:34 · 258 阅读 · 0 评论 -
二叉搜索树
二叉搜索树支持多种动态集合操作。treeSearch、treeMin、treeMax、successorTree(后继)、predecessorTree(前驱)、insert、delete 一棵二叉查找树是按二叉树结构来组织的。用链表来表示二叉查找树。结点的结构如下。 二叉搜索树的关键字的性质:设x为二叉搜索树的一个结点。如果y是x左子树中的一个结点,则y.val<=x.val;如果y是x右子树原创 2016-01-14 09:50:43 · 249 阅读 · 0 评论 -
红黑树
笔者在之前学习数据结构的时候,看到红黑树觉得好难就跳过了。最近在看《算法导论》里面也讲到了红黑树,于是笔者决定好好学习红黑树的知识。然而在看书上的讲解,感觉完全看不懂,很难吸收里面的知识。 对于左旋转和右旋转,虽然能看懂代码,但是完全不明白为什么要会这样的操作。对于红黑树的插入和删除时破坏红黑树性质时为什么要这样变颜色那样变颜色,也是不知所云。 后来在网上搜资料,看见有人说红黑树是对2-3查找树原创 2016-01-15 10:16:26 · 234 阅读 · 0 评论