分离链表法散列ADT
2024-10-13 13:36:22
分离链表法解决冲突的散列表ADT实现
数据结构定义如下:
struct ListNode;
typedef struct ListNode *Position;
struct HashTbl;
typedef struct HashTbl *HashTable; HashTable InitializeTable(int TableSize);
void DestroyTable(HashTable H);
Position Find(ElementType Key, HashTable H);
void Insert(ElementType Key, HashTable H); struct ListNode{
ElementType Element;
Position Next;
}; typedef Position List; struct HashTbl{
int TableSize;
List *TheLists;
};
初始化散列表实现代码如下:
HashTable InitializeTable(int TableSize){
HashTable H;
int i; if(TableSize < MinTableSize){
printf("Table size too small\n");
return NULL;
}
H = malloc(sizeof(struct HashTbl));
H->TableSize = TableSize;
H->TheLists = malloc(H->TableSize * sizeof(List));
for(i=; i<H->TableSize; i++){
H->TheLists[i] = malloc(sizeof(struct ListNode));
H->TheLists[i]->Next = NULL;
}
return H;
}
Find的实现代码如下:
Position Find(ElementType Key, HashTable H){
Position P;
List L;
L = H->TheLists[Hash(Key, H->TableSize)];
P = L->Next;
while(P!=NULL && P->Element!=Key)
P = P->Next;
return P;
}
Insert的实现代码如下:
void Insert(ElementType Key, HashTable H){
Position Pos, NewCell;
List L; Pos = Find(Key, H);
if(Pos != NULL){
NewCell = malloc(sizeof(struct ListNode));
L = H->TheLists[Hash(Key, H->TableSize)];
NewCell->Element = Key;
NewCell->Next = L->Next;
L->Next = NewCell;
}
}
Delete的实现代码如下:
void Delete(ElementType Key, HashTable H){
Position P;
List L; L = H->TheLists[Hash(Key, H->TableSize)];
while(L->Next!=NULL && L->Next->Element!=Key)
L = L->Next; if(L->Next == NULL)
printf("Key not in the hashtable\n");
else{
P = L->Next;
L->Next = P->Next;
free(P);
}
}
最新文章
- LinkedHashMap及其源码分析
- [Leetcode] Permutations II
- 有向图的拓扑排序算法JAVA实现
- js格式化日期 年月日
- 请求webservice接口的某方法数据
- Svn win7系统下状态图标不显示-转载
- linux 命令之系统活动报告sar
- Controltemplate datatemplate
- 使用ncc分析代码
- Hadoop管理员的十个最佳实践(转)
- [未完成]关于POI的使用
- JAVA GUI学习 - JSplitPane分屏组件学习
- Python进阶之函数式编程
- Python 笔记 v1 - json和字符串互转
- Nginx编译安装lua-nginx-module
- 使用cocoa捕获dock栏中的“退出”事件,解决qt开发的应用程序退出异常的问题
- 在linux系统中安装VSCode(Visual Studio Code)和图标的创建方式
- Java指定保留小数位数的方法
- c# 设计模式 之:装饰模式
- Sailing
热门文章
- SWT开发工具
- Deep Learning 资料总结
- springmvc pager-taglib 分页,bootstrap样式
- Linux常用系统命令大全
- 【轮子狂魔】抛弃IIS,打造个性的Web Server - WebAPI/Lua/MVC(附带源码)
- 动态加载与插件系统的初步实现(四):解析JSON、扩展Fiddler
- 【转】将Centos的yum源更换为国内的阿里云源
- pdo的用处,用法
- oracle vm virtualbox 保存虚拟系统,重装后使用
- 【SIKIA计划】_04_C#中级教程 (2015版)笔记