广工AnyView数据结构-4
来源:互联网 发布:经济结构优化 编辑:程序博客网 时间:2024/04/29 20:24
/****
【题目】已知某哈希表的装载因子小于1,哈希函数H(key)
为关键字(标识符)的第一个字母在字母表中的序号,处理
冲突的方法为线性探测开放定址法。试编写一个按第一个
字母的顺序输出哈希表中所有关键字的算法。
哈希表的类型HashTable定义如下:
define SUCCESS 1
define UNSUCCESS 0
define DUPLICATE -1
typedef char StrKeyType[4];
typedef struct {
StrKeyType key; // 关键字项
int tag; // 标记 0:空;1:有效; -1:已删除
void *any; // 其他信息
} RcdType;
typedef struct {
RcdType *rcd; // 存储空间基址
int size; // 哈希表容量
int count; // 表中当前记录个数
} HashTable;
****/
void PrintKeys(HashTable ht, void(*print)(StrKeyType))/* 依题意用print输出关键字 */{ int n,i,size; char c; for(c='A';c<='Z';c++){ for(i=0;i<ht.size;i++){ if(ht.rcd[i].tag==-1) continue; if(ht.rcd[i].key[0]==c) print(ht.rcd[i].key); } }}
/****
【题目】假设哈希表长为m,哈希函数为H(x),用链地址法
处理冲突。试编写输入一组关键字并建造哈希表的算法。
哈希表的类型ChainHashTab定义如下:
define NUM 7
define NULLKEY -1
define SUCCESS 1
define UNSUCCESS 0
define DUPLICATE -1
typedef char HKeyType;
typedef struct HNode {
HKeyType data;
struct HNode* next;
}*HLink;
typedef struct {
HLink *rcd; // 指针存储基址,动态分配数组
int count; // 当前表中含有的记录个数
int size; // 哈希表的当前容量
}ChainHashTab; // 链地址哈希表
int Hash(ChainHashTab H, HKeyType k) { // 哈希函数
return k % H.size;
}
Status Collision(ChainHashTab H, HLink &p) {
// 求得下一个探查地址p
if (p && p->next) {
p = p->next;
return SUCCESS;
} else return UNSUCCESS;
}
****/
int BuildHashTab(ChainHashTab &H, int n, HKeyType es[]) /* 直接调用下列函数 *//* 哈希函数: *//* int Hash(ChainHashTab H, HKeyType k); *//* 冲突处理函数: *//* int Collision(ChainHashTab H, HLink &p); */{ int i,k,j; HLink p,q,p1; H.rcd = (HLink*)malloc(7*sizeof(HLink)); H.size = 7; H.count = 0; for(i = 0;es[i] >= 'A';i++){ p = (HNode*)malloc(sizeof(HNode)); p->next = NULL; p->data = es[i]; k = Hash( H, p->data) ; if(NULL !=H.rcd[k]){ // 判断其中是否有相同的HKeyType p1 = H.rcd[k]; while(NULL != p1){ //用j作为标记,如果j = 0表示没有相同的,插入p if(p1->data == p->data) j = 1; p1 = p1->next; } if(j == 0){ q = H.rcd[k]; p->next = q; H.rcd[k] = p; } j = 0; } else H.rcd[k] = p; //为什么H.rcd[k]->next = p;不会报错 H.count++; }}
更多查看我的博客:httos://beatjerome.github.io
- 广工AnyView数据结构-4
- 广工AnyView数据结构-1
- 广工AnyView数据结构-2
- 广工AnyView数据结构-3
- 广工anyview数据结构-6
- 2015广工数据结构anyview题库
- 广工anyview数据结构-03(乱码不贴)
- 广工anyview数据结构-04~06(乱码不贴)
- 广工anyview数据结构-07~08(乱码不贴)
- 广工anyview数据结构-09~10(乱码不贴)
- 广工anyview数据结构-01~02(部分乱码我就不贴出来了)
- Anyview数据结构-5
- 广工数据结构
- 广工 数据结构 10.26
- 广工 数据结构 9.45
- 广工 数据结构 7.23
- CH6_EX34 数据结构Anyview练习
- CH06_EX33 数据结构Anyview练…
- A系新品发布,微鲸表示“不能耍猴”
- [学习随笔]并发编程与多线程一
- 字符串分隔java
- 在Windows7上用Android Studio编译Tensorflow_Android_Demo
- 7-1 图着色问题(25 分)
- 广工AnyView数据结构-4
- 线程,进程,协程之间的联系和区别
- 解读狼人杀虫洞连麦技术 | 硬创公开课预告
- 3秒钟不懂你砍我:Hibernate在Idea下的教程
- 星河研究院:在自动驾驶领域到底是做青蛙还是做天鹅?(上)
- 小密圈吴鲁加:我终于赶上了知识付费这个风口
- 分治策略之矩阵乘法的几种实现
- HDU
- IntelliJ IDEA Spring Boot(5) 集成Hibernate