//来源
http://hi.baidu.com/xiaojiang/item/6a0a4d14430509f4dceecae5#include <stdio.h>
#include <stdlib.h>
//定义哈希函数 num :需要进行散列的数据
/*author 码农小江*/
int hashFunc( int num)
{
int hashValue;
hashValue = num%7;
return hashValue;
}
void main()
{
int i, j,k, hash_value, second_hash;
static int hashTable[7];//定义长度是7的散列表
int a[6] = {38,25,74,63,52,48};//线性表
for(i=0; i<6; i++)
{
hash_value = hashFunc(a[i]);//计算每个元素的散列值
if(!hashTable[hash_value])//若没有冲突,即当前第一次占用则成功
{
hashTable[hash_value] = a[i];
}else//否则重新计算,到没有冲突为止
{
for(j=1; j<6; j++)
{
second_hash = (hash_value + j)%7;
if(!hashTable[second_hash])
{
hashTable[second_hash] = a[i];
break;
}
}
}
}
for(k=0;k<7;k++)
{
printf("%d\n", hashTable[k]);
}
}