首页 > 代码库 > 哈希表

哈希表

 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 }

 

哈希表