算法学习 之链表
2017-05-09 00:00
10 查看
/**********开放定址哈希表的存储结构**********/ int hashsize[ ] = { 997, ... }; // 哈希表容量递增表一个合适的素数序列 typedef struct { ElemType *elem; // 数据元素存储基址, int count; // 当前数据元素个数 int sizeindex;// sizeindex为当前容量 } HashTable; #define SUCCESS 1 #define UNSUCCESS 0 #define DUPLICATE -1 Status SearchHash (HashTable H, KeyType Key, int &p, int &c) { // 在开放定址哈希表H中查找关键码为K的元素, // 若查找成功,以p指示待查数据元素在表中位置, // 并返回SUCCESS;否则,以p指示插入位置, // 并返回UNSUCCESS, c用以计冲突次数,其初值 // 置零,供建表插入时参考 p = Hash(Key); //求得哈希地址 while ( H.elem[p].key != NULLKEY &&K != H.elem[p].key) // 该位置中填有记录并且关键字不相等 collision(p, ++c); // 求得下一探查地址p if ((Key== H.elem[p].key) return SUCCESS; // 查找成功,p返回待查数据元素位置 else return UNSUCCESS; // 查找不成功,p返回的是插入位置 } // SearchHash 通过调用查找算法实现了开放定址哈希表的插入操作。 Status InsertHash (HashTable &H, Elemtype e) { // 查找不成功时插入数据元素e到开放定址哈希表H // 中,并返回OK;若冲突次数过大,则重建哈希表 c = 0; if ( HashSearch ( H, e.key, p, c ) == SUCCESS ) return DUPLICATE; //表中已有与e有相同关键字的元素 else if ( c < hashsize[H.sizeindex]/2 ) { // 冲突次数c未达到上限,(阀值c可调) H.elem[p] = e; ++H.count; return OK; // 插入e } else RecreateHashTable(H); // 重建哈希表 } // InsertHash
相关文章推荐
- 算法学习(七)---链表之单链表
- 《Delphi 算法与数据结构》学习与感悟[9]: 循环链表
- 数据结构与算法学习--链表
- 算法学习1 单链表
- 韩顺平_PHP程序员玩转算法公开课(第一季)11_双向链表在内存中存在形式剖析_学习笔记_源代码图解_PPT文档整理
- 算法学习,单链表 C# 泛型实现
- 韩顺平_PHP程序员玩转算法公开课(第一季)03_单链表crud操作之_水浒英雄排行算法_学习笔记_源代码图解_PPT文档整理
- 算法学习第二课链表C语言实现
- 算法学习之数据结构之链表是否相交,链表是否存在环
- Java学习之数组1(1.数组的声明;2.元素为引用数据类型的数组;3.关于main方法里的String[] args;4.数组排序;5.数3退1 数组算法,(用数组模拟链表);6数组查找之二分法;7数组的拷贝)
- 《Delphi 算法与数据结构》学习与感悟[8]: 单向链表的添加、删除与遍历
- 每天学习一算法系列(13) (输入一个单向链表,输出该链表中倒数第k个结点)
- 每天学习一算法系列(8) (编程判断俩个链表是否相交)
- [数据结构算法学习] 单向链表
- 新手学习数据结构与算法---链表归并
- 《Delphi 算法与数据结构》学习与感悟[10]: 双向链表
- 算法学习(8)-链表之双端链表
- 《Delphi 算法与数据结构》学习与感悟[7]: 链表与数组的异同
- 韩顺平_PHP程序员玩转算法公开课(第一季)05_使用单链表解决约瑟夫问题_学习笔记_源代码图解_PPT文档整理
- 数据结构与算法学习笔记——链表部分实现(数组形式)