#include <stdio.h>
#define MAXSIZE 11
#define key 11
void insert(int hashArray[],int x){
int i = 0;
int t = x % key;
while(i < MAXSIZE){
if(hashArray[t] <= -1){
hashArray[t] = x;
break;
}else{
t = (t+1) % key;
}
i++;
}
if(i == MAXSIZE){
printf("哈希表已满!\n");
}
}
void search(int hashArray[],int x){
int i = 0;
int t = x % key;
while(hashArray[t] != -1 && i<MAXSIZE){
if(hashArray[t] == x){
printf("要查找数字的下标是:%d",t);
break;
}else{
t = (t+1) % key;
}
i++;
}
if(i == MAXSIZE || hashArray[t] == -1){
printf("没有找到!\n");
}
printf("\n");
}
void del(int hashArray[],int x){
int i = 0;
int t = x % key;
while(hashArray[t] != -1 && i < MAXSIZE){
if(hashArray[t] == x){
hashArray[t] = -2;
printf("已删除!\n");
break;
}else{
t = (t+1)%key;
}
i++;
}
if(i == MAXSIZE || hashArray[t] == -1){
printf("删除失败!\n");
}
}
void print(int hashArray[]){
for(int i=0;i<MAXSIZE;i++){
printf("%d ",hashArray[i]);
}
}
int main(){
int hashArray[MAXSIZE];
int x,k=0;
int target;
int delTarget;
for(int i=0;i<MAXSIZE;i++){
hashArray[i] = -1;
}
printf("请输入数据!(-1停止)\n");
scanf("%d",&x);
while(x != -1 && k < MAXSIZE){
insert(hashArray,x);
k++;
scanf("%d",&x);
}
printf("此时哈希表中的内容:\n");
print(hashArray);
printf("\n");
printf("请输入要查找的数字。\n");
scanf("%d",&target);
search(hashArray,target);
printf("请输入要删除的数字。\n");
scanf("%d",&delTarget);
del(hashArray,delTarget);
printf("此时哈希表中的内容:\n");
print(hashArray);
return 0;
}
查找(2)——哈希查找
最新推荐文章于 2019-04-08 11:48:01 发布