-->
当前位置:首页 > 题库 > 正文内容

程序填空题:哈希表查找(线性探查法)

Luz4年前 (2021-05-10)题库3540
输入不大于m的n个不为0(0表示空值)的数,用线性探查法解决冲突构造散列表。输入一个值key,在散列表中查找key位置。

```c++

#include
using namespace std;

#define m 16
#define NULLKEY 0

struct HashTable{
int key;
};

void CreateHash(HashTable HT[],int n);//实现细节隐藏
int SearchHash(HashTable HT[],int key){
int H0=key%13;
int Hi;
if (@@[HT[H0].key==NULLKEY](2)) return -1;
else if (@@[HT[H0].key==key](2)) return H0;
else{
for(int i=1;i Hi=@@[(H0+i)%m](2);
if (@@[HT[Hi].key==NULLKEY](2)) return -1;
else if (@@[HT[Hi].key==key](2)) return Hi;
}
return -1;
}
}

int main()
{ int value,key;
int result;
int i,j,n;
HashTable HT[m];
for(i=0;i HT[i].key=0;
cin >> n;
if(n>m) return 0;
CreateHash(HT,n);
cin >> key;
result=SearchHash(HT,key);
if(result!=-1)
cout << "search success,The key is located in "<< result+1;
else
cout << "search failed";
return 0;
}
```






答案:
第1空:HT[H0].key==NULLKEY

第2空:HT[H0].key==key

第3空:(H0+i)%m

第4空:HT[Hi].key==NULLKEY

第5空:HT[Hi].key==key

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。