哈希表Word格式.docx
《哈希表Word格式.docx》由会员分享,可在线阅读,更多相关《哈希表Word格式.docx(10页珍藏版)》请在冰点文库上搜索。
//选择标记
voidhaximain()
{
voidhaxiinput();
haxiinput();
}
voidhaxiinput()//输入数据
voidselect_back();
voidcreate(inta[]);
voidspace1();
voidstar();
inti;
star();
printf("
\n\n"
);
space1();
哈希表生成及哈希查找演示\n"
printf("
\n\n\n请输入进行存储的数字个数:
"
scanf("
%d"
&
n);
请输入数字,以空格间隔:
for(i=1;
i<
=n;
i++)
{
scanf("
a[i]);
}
create(a);
select_back();
voidcreate(inta[])
intj;
memset(c,0,sizeof(c));
j=a[i]%n;
if(j==0)j=1;
while(c[j]!
=0)
{
j++;
if(j>
n)j=1;
}
c[j]=a[i];
voidselect_back()
voidspace();
voidselect(intk);
\n"
1\t输出哈希表\n"
2\t查找\n"
3\t插入\n"
4\t删除\n"
5\t重新输入\n"
6\t退出\n"
\n请选择:
k);
select(k);
voidselect(intk)
voiddisp(inta[]);
voiddel();
voidinsert();
voidsearch();
switch(k)
case1:
disp(a);
break;
//输出哈希表
case2:
search();
//查找关键字intm
case3:
insert();
//插入
case4:
del();
//删除
case5:
haxiinput();
//重新输入
case6:
exit(0);
//退出
default:
printf("
\n请输入正确的操作选项(1-6):
voiddel()
intm;
请输入想删除的数据:
m);
inti,j;
i=1;
while((i<
=n)&
&
(m!
=a[i]))
i++;
if(i>
n)printf("
没有此数据!
else//m=a[i]
for(j=i;
j<
n;
j++)
a[j]=a[j+1];
n=n-1;
create(a);
disp(a);
voidinsert()
请输入想插入的数据:
n++;
a[n]=m;
disp(a);
voidsearch()//若查找有重复的数据,只显示第一个
请输入想查询的数据:
intx,y,v=1;
x=m%n;
if(x==0)x=1;
y=x;
while((c[x])!
=m)
x<
n?
x++:
x=1;
if(x==y){v=0;
switch(v)
查找数据:
%d\t哈希地址:
%d\n"
m,x);
case0:
voiddisp(inta[])
哈希方法:
除留余数法\t解决冲突的方法:
线性探测\n\n"
哈希表如下:
哈希地址:
%d\t"
i);
哈希数据:
c[i]);
intmain()
haximain();
return0;
voidspace()
"
voidspace1()
voidstar()
*****************************************"