永发信息网

散列表的建立(一定要用c++哦)

答案:1  悬赏:40  手机版
解决时间 2021-05-10 23:46
  • 提问者网友:箛茗
  • 2021-05-10 17:34

题目:散列表的建立

1.实验目的

(1)掌握散列查找的基本思想;

(2)掌握闭散列表的构造方法;

(3)掌握线性探测处理冲突的方法;

(4)掌握散列技术的查找性能。

2.实验内容

(1)对于给定的一组整数和散列函数,采用线性探测法处理冲突构造散列表;

(2)设计查找算法,验证查找性能。

3.实现提示

假设散列表长为m,散列函数为除留余数法,即H(key)=key%p,m和p在主函数中由用户从键盘输入,待散列的数据也由用户从键盘输入,算法如下:

闭散列表构造算法

int CreatHash(int ht[ ], int m)

{

for (i=0; i<m; i++) //散列表初始化

ht[ i ]=0;

cin>>k;

while (k! =’#’) // #作为结束标志

{

j =k % p;

if (ht[ j ] = = 0) ht[ j ] =k; //没有发生冲突,直接存入

else{

i = (j+1) % m;

while (ht[ i ]!=0 && i!=j)

{

if (ht[ i ] = = 0){

ht[ i ] =k; //发生冲突,向后探测若干次后存入

break;

}

else i= (i+1) % m; //向后探测一个位置

}

if (i = = j)throw“溢出”;

}

cin>>k;

}

}

假设在已建立的散列表中进行静态查找,在查找过程中设置计数器count统计元素的比较次数,查找算法如下:

闭散列表的查找算法 HashSearch

int HashSearch ( int ht[ ], int m, int k)

{

j =k %p; count =0; i =j;

while (ht[ i ]!=0)

{

if ( ++count && ht[ i ] = = k) { //发生冲突,比较若干次查找成功

cout<<“查找成功,比较次数为:”<<count<<endl;

return i;

}

i= (i+1) % m; //向后探测一个位置

if (i = = j)break;

}

cout<<“查找不成功,比较次数为:”<<count<<endl;

}

最佳答案
  • 五星知识达人网友:渊鱼
  • 2021-05-10 19:09
你好哦。
有幸看到你的问题。
但是又很遗憾到现在还没有人回答你的问题。也可能你现在已经在别的地方找到了答案,那就得恭喜你啦。
可能是你问的问题有些专业了,没人会。或者别人没有遇到或者接触过你的问题,所以帮不了你。建议你去问题的相关论坛去求助,那里的人通常比较多,也比较热心,可能能快点帮你解决问题。
祝你好运~!
希望我的回答也能够帮到你!
谢谢
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯