课程设计报告哈希表Word下载.docx
《课程设计报告哈希表Word下载.docx》由会员分享,可在线阅读,更多相关《课程设计报告哈希表Word下载.docx(9页珍藏版)》请在冰豆网上搜索。
![课程设计报告哈希表Word下载.docx](https://file1.bdocx.com/fileroot1/2022-10/9/fe6f5769-a279-4efc-90af-33667a7126ec/fe6f5769-a279-4efc-90af-33667a7126ec1.gif)
2、测试数据.......................................................3
3、概要设计......................................................3
4、详细设计......................................................4
5、测试分析.....................................................11
六、课程设计总结.............................................13
七、附录(源代码).........................................14
1、问题描述
针对自己班级体中的“人名”设计一个哈希表,使得平均查找长度不超过R,完成相应的建表和查表程序。
基本要求:
假设人名为中国姓名的汉语拼音模式。
待填入哈希表的人名共有30个,取平均查找长度的上限为2。
哈希函数用除留余数法构造,用链表法处理冲突。
测试数据:
输入30个人的姓名拼音,即30个字符串,然后用除留余数法构建哈希表并用链表法处理冲突,最后将结果输出,程序自动计算查找长度的总数和平均查找长度,然后用户可以根据需求进行查找操作。
3、概要设计
4、详细设计
头文件
#include<
stdio.30*哈希表长度*
intsum=0,k=0;
typedefstructNode*哈希表结构体*
{
charkey_code[10];
*哈希表地址*
structNode*next;
}Node;
typedefstructmode;
}
voidHash_Init(HashTablestr[0]+str[1]+str[2];
intHash_Insert(HashTable1;
Node*Hash_Search(HashTableNULL;
}
elseif(p;
}
p=p->
next;
sum++;
returnNULL;
intHash_Create(HashTable"
);
return1;
int;
i++)
{
printf("
%4d"
i);
"
returncount2;
voidHash_Link()*链表法构造函数*
intkey;
inti;
Node*node;
HashTable"
k);
*查找总长度*
printf("
ASL=%d8\n"
*平均查找长度*
请输入要查找的数据:
"
*输入查找的姓名*
scanf("
%s"
&
key);
node=Hash_Search("
sum);
if(node!
=NULL)
查找成功!
else
查找不成功!
void-1;
di++)
{
address=((data%P)+di)%;
if(status[address]==0)
{
;
int1;
else
{
for(di=1;
di<
=-1;
di++)*哈希表中元素与查找元素不相等,查找下一元素*
address=((key%P)+di)%;
if(di+1;
break;
}
if(di>
=)
return0;
intmain()*主函数*
{
\t\t\t************************\n"
\t\t\t哈希表设计\n"
\n"
Hash_Link();
5、测试分析
随机输入的30个人的姓名拼音
测试过程:
输入30个人的姓名拼音,观察输出结果,并进行查找操作
测试结果:
主界面:
哈希表:
6、课程设计总结
这次数据结构课程设计持续了两周,在这两周中付出了很多,同样也得到了很多。
这次课程设计巩固和加深了对数据结构的理解,提高综合运用本课程所学知识的能力。
培养独立思考,深入研究,分析问题、解决问题的能力。
通过实际编译系统的分析设计、编程调试,掌握应用软件的分析方法和工程设计方法。
在本次课程设计中,不得不提的还有合作。
虽说课题不是太难,但有时自己想不明白,通过大家的讨论可以更快和更有效率的解决问题,而且映象还很深刻。
所以以后要多多和同学讨论,毕竟自己的不可能想得很全。
通过这次课程设计,让我学到了很多,让我知道了认真上好专业实验课的重要性,以后多在实践中锻炼自己,毕竟说和做还是有很大差距的,而且写程序的过程中要考虑周到,严密。
在做设计的时候要有信心,有耐心,切勿浮躁。
认真的学习课本知识,掌握课本中的知识点,并在此基础上学会灵活运用。
在课余时间里多写程序,熟练掌握在调试程序的过程中所遇到的常见错误,以便能节省调试程序的时间。
7、附录(程序源代码):
#include<
stdio.13
typedefstructemployee
intkey_code;
structemployee*next;
}Employee;
voidlogo()
\t\t\t哈希表的基本操作\n"
\t\t\t\n"
voidHash_Init(HashTable1;
Employee*Hash_Search(HashTableNULL;
voidConFun()
请按任意键继续...."
getch();
voidHash_Link()
Employee*em;
ASL=%d30\n"
%d"
em=Hash_Search("
if(em!
ConFun();
voidSelectModel()
do
system("
cls"
logo();
fflush(stdin);
\t
(1):
除数余留法创建哈希表\n"
\t
(2):
退出系统\n"
\t请选择序号:
i);
switch(i)
case1:
break;
case2:
感谢您的使用,欢迎下次再来\n"
exit(0);
default:
printf("
\t请输入1-6\n"
ConFun();
break;
}while
(1);
intmain()
SelectModel();