//散列表查找——线性探测法
#include<iostream>
#include<stdlib.h>
using namespace std;
void print(int list[],int e,int key,int a){
int n=e%key;//对输入的输求余
while(list[n]!=-1){
n=n+1;
if(n>a-1){
n=0;
}
}
list[n]=e;
// printf("存储成功\n");
}
void search(int list[],int e,int key,int a){
int n=e%key;
int sum=1;
while(list[n]!=e){
n++;
sum++;
if(n>a-1){
n=0;
}
}
printf("查找的元数的下标为:%d\n查找次数为:%d\n",n,sum);
}
/*
18 16
11
10 24 32 17 31 30 46 47 40 63 49
*/
int main (){
int a,key,num,data,element;//表长 ,模几,录入数据数 ,数据
//cout <<"请输入表长和模几取余:";
cin>>a>>key;
int *list=(int*)malloc(sizeof(int)*a);
// cout<<"录入几个数据:";
for(int i=0;i<a;i++){
list[i]=-1;
}
cin>>num;
for(int i=0;i<num;i++){
cin>>data;
print(list,data,key,a);
}
printf("存储成功\n");
cout<<"输入查找元素:";
cin>>element;
search(list,element,key,a);
return 0;
}
07-11
727
12-31
5173