数据结构
JeremiahSu
这个作者很懒,什么都没留下…
展开
-
List
List中的快行指针技巧通过两个指针来迭代访问链表,其中一个比另一个超前一些,快指针比慢指针先行几步,或与慢指针相差固定的步数。链表中的递归问题1.单链表的遍历void List_Traverse(List &l){ if(NULL == l) return ; cout<<l.data<<endl; //向下一层递归之前输出数据 List_Traver原创 2015-09-07 14:03:37 · 344 阅读 · 0 评论 -
HashTable
常见散列函数和处理冲突的方法常用的构造散列函数的方法有:(1)、直接定址法取关键字或关键字的某个线性函数值为散列地址,即:h(key) = key 或 h(key) = a * key + b其中a和b为常数。(2)、数字分析法(3)、平方取值法取关键字平方后的中间几位为散列地址。(4)、折叠法将关键字分割成位数相同的几部分(最后一部分的位数可以不同),然后取这几部分的叠加和(舍去进位)作为散列转载 2015-09-07 11:28:42 · 314 阅读 · 0 评论 -
线索树
1.概念:对二叉树的遍历会得到一个线性序列,这是对非线性结构的线性化。线索树来保存在动态过程中得到的有关前驱和后继的信息。2.存储结构:typedef struct BiTHrNode{ TypeElement data; strcut BiThrNode *lchild,rchild; int LTag,RTag;}BiThrNode,*BiThrTree;以这种结构构成的原创 2015-09-16 09:35:59 · 751 阅读 · 0 评论 -
B-Tree/B+Tree
产生背景大规模数据存储中,实现索引查询这样一个实际背景下,树节点存储的元素数量是有限的(如果元素数量非常多的话,查找就退化成节点内部的线性查找了),这样导致二叉查找树结构由于树的深度过大而造成磁盘I/O读写过于频繁,进而导致查询效率低下. 一个基本的想法就是:采用多叉树结构多路查找 B树中每一个结点能包含的关键字(如之前上面的D H和Q T X)数有一个上界和下界。这个下界可以用一个称作B树的最转载 2015-09-19 18:57:13 · 410 阅读 · 0 评论