题意
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;
}
/**
**/