问题 问答题

若输入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*/

单项选择题
多项选择题