用c语言如何建立一个散列表?能不能给个简单的代码解释一下

如题所述

第1个回答  2012-05-07
//来源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]);
}
}
第2个回答  2012-05-07
我不想定义一个长度的很大的数组。可以用C语言的方法不用C++的方法吗?谢谢如果要其它数据结构,可以根据实际需求选择链表、树、散列表等等。 #include追问

代码呢?我问这个就是想在建立散列表是用

第3个回答  2012-05-07
不知道 路过