0
点赞
收藏
分享

微信扫一扫

浙大版《数据结构学习与实验指导(第2版)》案例5-1.1:线性探测法的查找函数


题意

Description
实现线性探测法的查找函数。
用 Key% TableSize 定义散列函数。

Input
输入第一行首先给出一个正整数n(≤1000),表示散列表的长度($TableSize$)。
第二行$n$个整数,表示当前散列表的内容,-1表示该位置为空。
第三行一个整数Key,表示要查找的值。

Output
输出包括一行。如果找到Key,输出这个单元下标;如果没找到Key但遇到一个空单元,输出这个空单元下标;如果没找到Key且散列表满了,则输出ERROR。

思路

大体就是模拟一下这个过程。
从前到后遍历一遍,如果该值出现过了,输出出现的位置的下标;
否则,看是否有值为-1的下标,如果没有的话输出ERROR;否则,输出值为-1的下标。

代码

#include <bits/stdc++.h>
using namespace std;
const int maxn=1e6+100;
#define debug(x) cout<<#x<<":"<<x<<endl;

int n,x,a[maxn];

int main()
{
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i];
cin>>x;
int pos=-1;
for(int i=1;i<=n;i++){
if(a[i]==x){
cout<<i-1<<endl;
return 0;
}
if(a[i]==-1&&pos==-1) pos=i-1;
}
if(pos==-1) puts("ERROR");
else cout<<pos<<endl;
return 0;
}

/**

**/


举报

相关推荐

0 条评论