数据结构之---C语言实现散列表(哈希Hash表)
来源:互联网 发布:java enum 指定值 编辑:程序博客网 时间:2024/06/04 19:27
//散列表查找算法(Hash)#include <stdio.h> #include <stdlib.h> #define OK 1#define ERROR 0#define TRUE 1#define FALSE 0#define SUCCESS 1#define UNSUCCESS 0#define HASHSIZE 7 #define NULLKEY -32768 typedef int Status; typedef struct{ int *elem; //基址 int count; //当前数据元素个数 }HashTable;int m=0; // 散列表表长/*初始化*/Status Init(HashTable *hashTable){ int i; m=HASHSIZE; hashTable->elem = (int *)malloc(m * sizeof(int)); //申请内存 hashTable->count=m; for (i=0;i<m;i++) { hashTable->elem[i]=NULLKEY; } return OK;}/*哈希函数(除留余数法)*/int Hash(int data){ return data % m;}/*插入*/void Insert(HashTable *hashTable,int data){ int hashAddress=Hash(data); //求哈希地址 //发生冲突 while(hashTable->elem[hashAddress]!=NULLKEY) { //利用开放定址的线性探测法解决冲突 hashAddress=(++hashAddress)%m; } //插入值 hashTable->elem[hashAddress]=data;}/*查找*/int Search(HashTable *hashTable,int data){ int hashAddress=Hash(data); //求哈希地址 //发生冲突 while(hashTable->elem[hashAddress]!=data) { //利用开放定址的线性探测法解决冲突 hashAddress=(++hashAddress)%m; if (hashTable->elem[hashAddress]==NULLKEY||hashAddress==Hash(data)) return -1; } //查找成功 return hashAddress;}/*打印结果*/void Display(HashTable *hashTable){ int i; printf("\n//==============================//\n"); for (i=0;i<hashTable->count;i++) { printf("%d ",hashTable->elem[i]); } printf("\n//==============================//\n");}int main(){ int i,j,result; HashTable hashTable; int arr[HASHSIZE]={13,29,27,28,26,30,38}; printf("***************Hash哈希算法***************\n"); //初始化哈希表 Init(&hashTable); //插入数据 for (i=0;i<HASHSIZE;i++) { Insert(&hashTable,arr[i]); } Display(&hashTable); //查找数据 result= Search(&hashTable,29); if (result==-1) printf("对不起,没有找到!\n"); else printf("29在哈希表中的位置是:%d\n",result);return 0;}
0 0
- 数据结构之---C语言实现散列表(哈希Hash表)
- C 基础数据结构---散列表(Hash) ADT
- 哈希表(散列表)—Hash表解决地址冲突 C语言实现
- 数据结构面试之十三——Hash表(散列表)
- 大二数据结构实验之散列表实现通讯录(C++)
- 数据结构之---散列表(hash table)
- hash表 c语言实现
- <数据结构>顺序列表的C语言实现
- 数据结构C语言实现之顺序表
- 数据结构之栈(C语言实现)
- 数据结构之单链表(C语言实现)
- 数据结构之 队列(C语言实现)
- 数据结构之 栈(C语言实现)
- 数据结构之数组(C语言实现)
- 基本数据结构——散列表(hash表)
- 数据结构Note1:Hash 表(散列表/哈希表)
- Hash实现(散列表)
- 数据结构之双向链表(C语言实现)
- bzoj-3771 Triple
- xxd命令
- jsp如何调整默认编码
- Mybatis-实现增删改查
- 宗白华 我们
- 数据结构之---C语言实现散列表(哈希Hash表)
- CSS 参考手册
- CF_318_Div.2 Bear and Elections(二分||暴力枚举)
- 不要苛刻
- java中final static关键字用法
- jsp输入框传值的问题,做个记录
- sort命令
- uboot之Mkconfig分析
- 分治法求最近点对