您的位置首页生活快答

数据结构习题

数据结构习题

的有关信息介绍如下:

数据结构习题

将以上九数字存在十二个空间中,增充因子为:9/12=0.75,由于哈希表的均匀特性,可以选key为11这个的一个素数为关键码值。也就是说将其中的键与11求余,余数放在对应的空间中,若是已经存在,则直接向后探测,放入到一个不存在的空间中即可。

int[] hashtable = new int;

int hashkey = 11;

//hashtable就是你要定义的哈表,我用C#表示一下

int[] keys = new int[]{100,90,120,60,78,35,42,21,15};

setHash(keys);

//存储哈希表

bool result = searchHash(100);

//寻找hash表中是否存在100的键值

//查找的原理是,打到该键应该在哈希表存储的位置,如果不在,则一直向后查找,直找到第一个空位置时即立即停止,因为若是存放时那么这里有一个空位置肯定要存放在这里的,否则就以查找到后报出存在的结果!

///该函数可以实现存储,将其中的数组按与11取余的情况存放在其中!如果该位置被占用时即寻找下一位置,直到寻找到空位置存入即可!

publci void setHash(int[] key)

{

foreach(int keyitem in key)

{

int sint = keyitem %hashkey;

int i =0;

while(hashtable[sint+i] != null)

{

i++;

}

hashtable[sint+i] = keyitem;

}

///该函数可以对特定键值进行查询,查询到即返回真,否则返回假

public bool searchHash(int key)

{

bool search = false;

int sint = key%hashkey;

int i = sint;

while(hashtable[i] != null)

{

if(i>hashtable.length)

i = 0;

if(hashtable[i] == key)

{

search = true;

break;

}

i++;

}

return seach;

}

//////////长时间不写C语言了,自己看着改一下吧!

其实数据结构的东西,你主要关注算法,算法出来了,其他的实现其实都是基本功了啊!

可用数组实现该散列。

有9个数据 要放到 长度为12的空间,可以采用模12的方法,如果模12后处在余数位置上没有元素,则把该元素放到此空间里,并打上空间被占用的标记;如果已经被占用,就继续往后搜索,直到找到一个没被占用的空间(注意:如果搜索到数组结束还没找到,则返回首地址继续搜索,直到对所有地址都遍历一遍)。这样就实现了散列。

搜索也一样,从模12后处在余数位置处开始搜索,如果匹配,则返回正确结果;如果不匹配,就继续往下搜索,如果找到了,就返回正确结果;如果直到找到下一个没被占用的空间,还没有匹配的数据,则表示没有该数据,返回错误结果,程序结束。

就这样吧。

程序嘛,好久没编程了,就不写了啊!