闭散列表的查找、插入和删除操作的完整C代码
来源:互联网 发布:时标网络计划特点 编辑:程序博客网 时间:2024/05/20 05:45
/*闭散列表的建立、查找、插入、删除*/#include <stdio.h>#define NIL -1 //假设关键字为非负整数#define DEL -2typedef int KeyType;KeyType HashTable[13]; //便于验证算法,关键字个数假定为不超过13,哈希表长定为13//关键字插入函数void InsertHashTable(KeyType k){for(int i=0; i<13; i++)if( NIL == HashTable[(k%13+i)%13] || DEL == HashTable[(k%13+i)%13] ) {HashTable[(k%13+i)%13] = k;break;}}//哈希表的查找操作,查找成功则返回下表,否则返回-1int HashSearch(KeyType k){int i = 0;while( i<13 ) {if( k == HashTable[((k%13)+i)%13] ) return ((k%13)+i)%13;else if( NIL == HashTable[((k%13)+i)%13] ) return -1;i++;}if( 13 == i ) return -1;}//创建哈希表void CreateHashTable(){int n;KeyType key;for(int i=0; i<13; i++)HashTable[i] = NIL;printf("请输入关键字的个数:\n");scanf("%d", &n);printf("请输入%d个关键字的值:\n", n);for(i=0; i<n; i++) {scanf("%d", &key);if( -1 == HashSearch( key ) )InsertHashTable( key );}}//哈希表的删除操作void DeleteHashTable(KeyType k){int index = HashSearch( k );if( -1 == index )printf("无此关键字!\n");elseHashTable[index] = DEL;}//打印哈希表void PrintHashTable( void ){printf("当前哈希表存储的关键字为:\n");for( int i=0; i<13; i++ )printf("%d ", HashTable[i]);printf("\n");}int main(){KeyType k;CreateHashTable();PrintHashTable();printf("请输入要插入的关键字:\n");scanf("%d", &k);InsertHashTable( k );PrintHashTable();printf("请输入要删除的关键字:\n");scanf("%d", &k);DeleteHashTable( k );PrintHashTable();printf("请输入要查找的关键字:\n");scanf("%d", &k);if( -1 != HashSearch( k ) )printf("当前表的位置%d处查找到该关键字!\n", HashSearch( k )+1);elseprintf("无此关键字!\n");return 0;}
测试数据以及测试结果
0 0
- 闭散列表的查找、插入和删除操作的完整C代码
- 开散列表的查找、插入、删除操作的完整C代码
- BST二叉排序树的查找和删除的完整C代码
- 二叉排序树的构造,插入,删除,完整c代码实现
- 散列表查找(哈希表)的基本操作 (完整代码)
- 红黑树插入操作和删除的代码
- C语言---单链表的插入、删除、查找操作
- C语言---双向链表的插入、删除、查找操作
- C语言---双向链表的插入、删除、查找操作
- C语言顺序表的插入、删除、查找操作实现
- c语言心得-----数组中对元素的操作排序,查找,插入,和删除
- 散列表的插入和删除
- 二叉排序树的操作(建立、插入、删除和查找)
- BST的插入、删除、查找操作
- AVL树的插入、删除、查找操作
- 二叉查找树的查找、插入、删除、释放等基本操作的实现(C语言)
- 散列文件的插入、删除、查找和打印(C语言源代码)
- 二叉查找树的操作(插入、删除、查找)
- 使用放射渐变制作光影效果
- PI API 基础函数(一)
- LEETCODE: Permutation Sequence
- VC2012编译CEF3
- 大二生活(一)
- 闭散列表的查找、插入和删除操作的完整C代码
- 超级丰富的组件 各种语言
- 爱探险的朵拉
- 【剑指Offer面试编程题】题目1366:栈的压入、弹出序列--九度OJ
- 网卡故障:弹出界面eth0: 错误:没有找到合适的设备:没有找到可用于链接System eth0 的
- 用Delphi从内存流中判断图片格式
- JNI/NDK开发指南(三)——JNI数据类型及与Java数据类型的映射关系
- Linux下的dialog工具 使用方法
- 如何更改分享来源和授权页面的友盟社会化组件字段