首页 > 代码库 > 哈希表
哈希表
1 #include <stdio.h> 2 #define HASH_LEN 13 //哈希表长度 3 #define TABLE_LEN 8 //数据长度 4 int data[TABLE_LEN] = {69, 65, 90, 37, 92, 6, 20, 54}; 5 int hash[HASH_LEN] = {0}; //initialize data is 0 初始化一个数组 6 7 //将数值插入hash表中 8 void InsertHash(int hash[], int m, int data) 9 {10 int i;11 i = data%13; //get hash address12 while(hash[i]){ // the address used;判断冲突13 i++; //解决冲突14 i = i % m; 15 }16 hash[i] = data;17 }18 19 void CreateHash(int hash[], int m, int data[], int n)20 { 21 int i;22 for(i=0;i<n;i++) //place the data to hash map23 { 24 InsertHash(hash, n, data[i]);25 }26 }27 28 int HashSearch(int hash[], int n, int key)29 {30 int i;31 i = key%13; //get the hash address;32 while(hash[i] &&hash[i]!=key) //is conflict?33 {34 i++;35 i=i% n; //resolve confict 36 }37 if(hash[i]==0)38 return -1; //not find the data39 else40 return i; //find ok41 }42 43 int main()44 {45 int key, i, pos;46 CreateHash(hash, HASH_LEN, data, TABLE_LEN); 47 printf("hash values: ");48 for(i=0;i<HASH_LEN;i++)49 printf("%d ", hash[i]);50 printf("\n");51 printf("input the key data:");52 scanf("%d", &key);53 54 pos = HashSearch(hash, HASH_LEN, key);55 if(pos>=0)56 printf("find ok, pos is NO.%d \n", pos);57 else58 printf("find error\n");59 return 0;60 }
哈希表
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。