哈希查找
就写了代码:是模仿室友的,有些还有问题,明天改进…..
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
#define Max 11
#define N 8
int hashtable[Max];
int func(int value)
{
return value%Max;
}
int search(int key)
{
int pos;
int t;
pos=func(key);
t=pos;
while(hashtable[t]!=key&&hashtable[t]!=-1)
{
t=(t+1)%Max;
if(pos==t)
return -1;
}
if(hashtable[t]=-1)
return NULL;
else
return t;
}
void creathash(int key)
{
int pos,t;
pos=func(key);
t=pos;
while(hashtable[t]!=-1)
{
t=(t+1)%Max;
if(pos==t)
{
printf("哈希表已经满\n");
return;
}
}
hashtable[t]=key;
}
void main()
{
float flag[50];
int i,j,t;
for(i=0;i<Max;i++)
hashtable[i]=-1;
for(i=0;i<50;i++)
flag[i]=0;
srand((unsigned long)time(0));
i=0;
while(i!=N)
{
t=rand()%50;
if(flag[t]==0)
{
creathash(t);
printf("%2d:",t);
for(j=0;j<Max;j++)
printf("(%2d)",hashtable[j]);
printf("\n");
flag[t]=1;
i++;
}
}
printf("请输入你想查找的元素:\n");
scanf("%d",&t);
if(t>0&&t<50)
{
i=search(t);
if(i!= -1)
printf("查找成功! 其位置是:%d\n",i);
else
printf("查找失败!");
}
else
printf("输入有误!");
}
明天再改下,还有些错误….
还没有评论,来说两句吧...