数据结构
文章平均质量分 86
windyblankboy
这个作者很懒,什么都没留下…
展开
-
哈希表(散列表)
哈希表,根据关键字(key)直接访问在内存存储位置的数据结构。 它通过一个关键值的函数将所需的数据映射到表中的位置来访问数据,这个映射函数叫做散列函数,存放记录的数组叫做散列表。 构造哈希表的几种方法 直接定址法--取关键字的某个线性函数为散列地址,Hash(Key)= Key 或 Hash(Key)= A*Key + B,A、B为常数。 除留余数法--取关键值被原创 2016-05-25 21:39:46 · 429 阅读 · 0 评论 -
c++实现广义表
广义表是非线性的结构,是线性表的一种扩展,是有n个元素组成有限序列。广义表的定义是递归的,因为在表的描述中又得到了表,允许表中有表。 A = () B = (a,b) C = (a,b,(c,d)) D = (a,b,(c,d),(e,(f),h)) E = (((),()))如下图所示:650) this.width=650;" src="http://s5.51cto.com/wyf原创 2016-06-01 19:01:29 · 801 阅读 · 0 评论 -
c++实现二叉树(递归)
首先先来看一下树的结构:树是n(n>=0)个有限个数据的元素集合,形状像一颗倒过来的树。650) this.width=650;" src="/e/u261/themes/default/images/spacer.gif" style="background:url("/e/u261/lang/zh-cn/images/localimage.png") no-repeat center;bord原创 2016-06-01 19:01:32 · 346 阅读 · 0 评论 -
二叉树遍历的非递归实现
二叉树的遍历可以使用递归的方式实现,并且代码非常简单。而递归实际就是函数反复的调用本身,在栈上反复压栈。所以我们可以用栈来模拟实现递归。1.前序遍历 (1)栈是后进先出的特点,所以无条件的把栈的根节点入栈,在把栈顶元素输出之后依次把右孩子,左孩子压入栈中。代码如下:void _PrevOrder(Node * root) { stack s; if (root == NULL) {原创 2016-06-01 19:01:35 · 202 阅读 · 0 评论 -
线索化二叉树
二叉树是一种非线性结构,遍历二叉树几乎都是通过递归或者用栈辅助实现非递归的遍历。用二叉树作为存储结构时,取到一个节点,只能获取节点的左孩子和右孩子,不能直接得到节点的任一遍历序列的前驱或者后继。为了保存这种在遍历中需要的信息,我们利用二叉树中指向左右子树的空指针来存放节点的前驱和后继信息。enum PointerTag {THREAD, LINK};template class T>struct原创 2016-06-01 19:01:38 · 181 阅读 · 0 评论 -
堆的简单实现(仿函数)
堆数据结构是一种数组对象,它可以被视为一棵完全二叉树结构。最大堆:每个父节点的都大于孩子节点。最小堆:每个父节点的都小于孩子节点。堆结构的二叉树存储是:650) this.width=650;" src="http://s4.51cto.com/wyfs02/M02/80/06/wKiom1c0c7LBwZGrAAB2OesT9u0148.png" title="QQ截图2016051220142原创 2016-06-01 19:01:41 · 205 阅读 · 0 评论 -
堆的一些简单应用
查找数据10000个数中找出最大的前100个数创建一个100个数的小堆,最上面的数是这100个数中最小的;然后依次遍历(从101到10000),如果比它大,替换它。代码实现如下:https://github.com/HandsomeBoby/Heap/blob/master/GetTopK.h堆排序使用大堆进行数组的排序代码实现如下:https://github.com/HandsomeBoby/原创 2016-06-01 19:01:46 · 207 阅读 · 0 评论 -
各种基本排序(直接插入;希尔;选择;堆;冒泡;快排)
我们所知道的各种排序办法有: 1.直接插入排序 算法思想: 在一个已知的排好序的序列中,插入一个数据,使更新后的序列保持有序 //直接插入排序 //O(N^2) void InsertSort(int * a, int size) { assert(a); for (int begin = 1; begin < size; begin++) { int tmp = a[begi原创 2016-06-03 15:54:19 · 400 阅读 · 0 评论 -
AVL树的简单实现
在计算机科学中,AVL树是最先发明的自平衡二叉查找树。在AVL树中任何节点的两个子树的高度最大差别为一,所以它也被称为高度平衡树。查找、插入和删除在平均和最坏情况下都是O(log n)。增加和删除可能需要通过一次或多次树旋转来重新平衡这个树。AVL树得名于它的发明者G.M. Adelson-Velsky和E.M. Landis,他们在1962年的论文《An algorithm for th翻译 2016-07-25 22:44:55 · 641 阅读 · 0 评论