哈希表.docx
- 文档编号:11592534
- 上传时间:2023-03-19
- 格式:DOCX
- 页数:10
- 大小:73.32KB
哈希表.docx
《哈希表.docx》由会员分享,可在线阅读,更多相关《哈希表.docx(10页珍藏版)》请在冰豆网上搜索。
哈希表
结果截图:
源代码:
#include
#include
#include
#defineN30//数据最多有N-1个
inta[N];//存储数据
intc[N];//key=key%n
//intb[N];//哈希地址
intn;//n表示数据的个数
intk;//选择标记
voidhaximain()
{
voidhaxiinput();
haxiinput();
}
voidhaxiinput()//输入数据
{
voidselect_back();
voidcreate(inta[]);
voidspace1();
voidstar();
inti;
star();
printf("\n\n");
space1();
printf("哈希表生成及哈希查找演示\n");
printf("\n\n");
star();
printf("\n\n\n请输入进行存储的数字个数:
");
scanf("%d",&n);
printf("请输入数字,以空格间隔:
");
for(i=1;i<=n;i++)
{
scanf("%d",&a[i]);
}
create(a);
select_back();
}
voidcreate(inta[])
{
inti;
intj;
memset(c,0,sizeof(c));
for(i=1;i<=n;i++)
{
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()
{
voidstar();
voidspace();
voidselect(intk);
voidspace1();
printf("\n\n");
star();
printf("\n");
space1();
printf("1\t输出哈希表\n");
space1();
printf("2\t查找\n");
space1();
printf("3\t插入\n");
space1();
printf("4\t删除\n");
space1();
printf("5\t重新输入\n");
space1();
printf("6\t退出\n");
star();
printf("\n请选择:
");
scanf("%d",&k);
printf("\n\n");
select(k);
}
voidselect(intk)
{
voidhaxiinput();
voiddisp(inta[]);
voiddel();
voidinsert();
voidsearch();
switch(k)
{
case1:
disp(a);break;//输出哈希表
case2:
search();break;//查找关键字intm
case3:
insert();break;//插入
case4:
del();break;//删除
case5:
haxiinput();break;//重新输入
case6:
exit(0);//退出
default:
printf("\n请输入正确的操作选项(1-6):
");
}
}
voiddel()
{
voidcreate(inta[]);
voiddisp(inta[]);
intm;
printf("请输入想删除的数据:
");
scanf("%d",&m);
inti,j;
i=1;
while((i<=n)&&(m!
=a[i]))
{
i++;
}
if(i>n)printf("没有此数据!
");
else//m=a[i]
{
for(j=i;j { a[j]=a[j+1]; } n=n-1; create(a); disp(a); } } voidinsert() { voiddisp(inta[]); intm; printf("请输入想插入的数据: "); scanf("%d",&m); n++; a[n]=m; create(a); disp(a); } voidsearch()//若查找有重复的数据,只显示第一个 { intm; printf("请输入想查询的数据: "); scanf("%d",&m); voidselect_back(); intx,y,v=1; x=m%n; if(x==0)x=1; y=x; while((c[x])! =m) { x x++: x=1; if(x==y){v=0;break;} } switch(v) { case1: printf("查找数据: %d\t哈希地址: %d\n",m,x);break; case0: printf("没有此数据! "); } select_back(); } voiddisp(inta[]) { voidselect_back(); inti; printf("哈希方法: 除留余数法\t解决冲突的方法: 线性探测\n\n"); printf("哈希表如下: \n"); printf("哈希地址: "); for(i=1;i<=n;i++) { printf("%d\t",i); } printf("\n"); printf("哈希数据: "); for(i=1;i<=n;i++) { printf("%d\t",c[i]); } printf("\n"); select_back(); } intmain() { haximain(); return0; } voidspace() { printf(""); } voidspace1() { printf(""); } voidstar() { printf("*****************************************"); }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 哈希表
![提示](https://static.bdocx.com/images/bang_tan.gif)