数据结构实验答案 数据结构课程设计哈希表设计Word文档下载推荐.docx
- 文档编号:14381062
- 上传时间:2022-10-22
- 格式:DOCX
- 页数:12
- 大小:110.70KB
数据结构实验答案 数据结构课程设计哈希表设计Word文档下载推荐.docx
《数据结构实验答案 数据结构课程设计哈希表设计Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《数据结构实验答案 数据结构课程设计哈希表设计Word文档下载推荐.docx(12页珍藏版)》请在冰豆网上搜索。
{char*py;
//名字的拼音
intk;
//拼音所对应的整数
}NAME;
typedefstruct//哈希表
intsi;
//查找长度
}HASH;
2.主要算法设计
(1)姓名(结构体数组)初始化
名字以拼音的形式够成字符串,将字符串的各个字符所对应的ASCII码相加,所得的整数做为哈希表的关键字。
voidInitNameList()
{char*f;
intr,s0,i;
NameList[0].py="
chenliang"
;
//陈亮
NameList[1].py="
chenyuanhao"
//陈元浩
NameList[2].py="
chengwenliang"
//程文亮
NameList[3].py="
dinglei"
//丁磊
NameList[4].py="
fenghanzao"
//冯汉枣
NameList[5].py="
fuzongkai"
//付宗楷
NameList[6].py="
hujingbin"
//胡劲斌
NameList[7].py="
huangjianwu"
//黄建武
NameList[8].py="
lailaifa"
//赖来发
NameList[9].py="
lijiahao"
//李嘉豪
NameList[10].py="
liangxiaocong"
//梁晓聪
NameList[11].py="
linchunhua"
//林春华
NameList[12].py="
liujianhui"
//刘建辉
NameList[13].py="
luzhijian"
//卢志健
NameList[14].py="
luonan"
//罗楠
NameList[15].py="
quegaoxiang"
//阙高翔
NameList[16].py="
sugan"
//苏淦
NameList[17].py="
suzhiqiang"
//苏志强
NameList[18].py="
taojiayang"
//陶嘉阳
NameList[19].py="
wujiawen"
//吴嘉文
NameList[20].py="
xiaozhuoming"
//肖卓明
NameList[21].py="
xujinfeng"
//许金峰
NameList[22].py="
yanghaichun"
//杨海春
NameList[23].py="
yeweixiong"
//叶维雄
NameList[24].py="
zengwei"
//曾玮
NameList[25].py="
zhengyongbin"
//郑雍斌
NameList[26].py="
zhongminghua"
//钟明华
NameList[27].py="
chenliyan"
//陈利燕
NameList[28].py="
liuxiaohui"
//刘晓慧
NameList[29].py="
panjinmei"
//潘金梅
for(i=0;
i<
NAME_NO;
i++)
{s0=0;
f=NameList[i].py;
for(r=0;
*(f+r)!
='
\0'
r++)*/将字符串的各个字符所对应的ASCII码相加,所得的整数做为哈希表的关键字*/
s0=*(f+r)+s0;
NameL
ist[i].k=s0;
}
}
(2)建立哈希表
(1)用除留余数法构建哈希函数
(2)用伪随机探测再散列法处理冲突
voidCreateHashList()
{inti;
i<
HASH_LENGTH;
i++)
{HashList[i].py="
"
HashList[i].k=0;
HashList[i].si=0;
}
{intsum=0;
intadr=(NameList[i].k)%M;
//哈希函数
intd=adr;
if(HashList[adr].si==0)//如果不冲突
{HashList[adr].k=NameList[i].k;
HashList[adr].py=NameList[i].py;
HashList[adr].si=1;
else//冲突
{do
{d=(d+NameList[i].k%10+1)%M;
//伪随机探测再散列法处理冲突
sum=sum+1;
//查找次数加1
}while(HashList[d].k!
=0);
HashList[d].k=NameList[i].k;
HashList[d].py=NameList[i].py;
HashList[d].si=sum+1;
(3)查找哈希表
在哈希表中进行查找,输出查找的结果和关键字,并计算和输出查找成功的平均查找长度
voidFindList()//查找
{charname[20]={0};
ints0=0,r,sum=1,adr,d;
printf("
请输入姓名的拼音:
);
scanf("
%s"
name);
r<
20;
r++)//求出姓名的拼音所对应的整数(关键字)
s0+=name[r];
adr=s0%M;
//使用哈希函数
d=adr;
if(HashList[adr].k==s0)//分3种情况进行判断
\n姓名:
%s关键字:
%d查找长度为:
1"
HashList[d].py,s0);
elseif(HashList[adr].k==0)
无此记录!
else
{intg=0;
do
{d=(d+s0%10+1)%M;
if(HashList[d].k==0)
{printf("
"
g=1;
}
if(HashList[d].k==s0)
%d"
HashList[d].py,s0,sum);
}while(g==0);
(4)显示哈希表
显示哈希表的的格式:
\n地址\t关键字\t\t搜索长度\tH(key)\t姓名\n
voidDisplay()
floataverage=0;
\n地址\t关键字\t\t搜索长度\tH(key)\t姓名\n"
//显示的格式
50;
i++)
{printf("
%d"
i);
\t%d"
HashList[i].k);
\t\t%d"
HashList[i].si);
HashList[i].k%M);
\t%s"
HashList[i].py);
\n"
average+=HashList[i].si;
average/=NAME_NO;
\n平均查找长度:
ASL(%d)=%f\n"
NAME_NO,average);
(5)主函数设计
voidmain()
{charch1;
InitNameList();
CreateHashList();
D.显示哈希表\nF.查找\nQ.退出\n请选择:
cin>
>
&
ch1;
switch(ch1)
{
case'
D'
:
Display();
cout<
<
endl;
break;
F'
FindList();
cout<
Q'
exit(0);
}
cout<
comeon!
(y/n):
}while(ch1!
n'
四.编程环境:
VC++6.0
五.调试报告及体会
1.测试用例程序运行结果
程序运行后显示如下:
(1)选择D查找,显示哈希表和平均查找长度,其中平均查找长度小于2,符合题目要求:
(2)选择F查找,输入要查找的人的姓名,若存在则显示名字和对应的关键字以及查找长度;
若不存在则显示无此记录:
(3)选择Q退出,如要继续可按任意键:
2.时间复杂度
O(n)
3.经验和体会
经过这次课程设计的学习,让我明白了编写程序的思路是很重要的。
在你编写一个程序之前,如果你的脑袋里面没有思路,根本就不可能编出好的程序。
就算能编出程序来,相信编出的程序的逻辑性也不会很强,因为你是想到什么就编什么,不系统。
因此在我们编程序之前一定要做好充分的准备,首先要理清自己的思路,然后再将思路分划成几个模块,一块一块的编写,最后再将所有的模块联系起来,组成一个完整的程序。
在上机实验之前,最好将程序编写好在草稿纸上,这样在编译的时候也比较有效率。
其实在这次课程设计的过程中,我也遇到了很多难题。
在种种的困难中,我明白了耐心在编写程序时的重要性。
如果你没有耐心就肯定编不出好的程序,特别是在调试的过程中。
我们初次写的程序在电脑上调试的时候也许会出项几百个错误,这时候我们应该耐心的检查出错的地方和原因,并予以改正,而不是抱怨自己写的程序太烂错误太多,就此放弃。
相信再强的人也不可能一次就能编译成功,总会有一些问题出现。
其实只要有耐心,你就会发现,在你修改了一个错误之后,其它有的错误也会跟着消失,所以在编译的时候一定要有耐心。
这段时间的课程设计,我也认识到数据结构是一门比较难的课程,需要花很多的时间
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构实验答案 数据结构课程设计哈希表设计 数据结构 实验 答案 课程设计 哈希表 设计
![提示](https://static.bdocx.com/images/bang_tan.gif)