若输入12000个不同的整数,其值介于0和19999之间,采用散列表存储这些数,散列函数为h(k)=k/2,请设计实现的算法。

admin2010-04-24  22

问题 若输入12000个不同的整数,其值介于0和19999之间,采用散列表存储这些数,散列函数为h(k)=k/2,请设计实现的算法。

选项

答案可利用两个数组来进行。用数组HT[0..119993]列函数的关键字。数组R[0..5999]存放发生冲突时的关键字,且依次存放。HT[i].next指示发生冲突时存于R中关键字的地址。 heash(HT,R) linklist HT[]; seqlist R[]; { int i,j,k,n; for(i=0;i<12000;i++) { H[i].data=-1; H[i].next=-1;/*初始化*/ } n=0; for(k=0;k<12000;k++) { scanf(&i); j=i/2; if(H[j].data!=-1) { H[j].next=n; A[n]=i; n++; } else H[j].data=i; } } /*hash*/

解析
转载请注明原文地址:https://jikaoti.com/ti/9PtaFFFM
本试题收录于: 数据结构题库理工类分类
0

最新回复(0)