欢迎来到天天文库
浏览记录
ID:18627989
大小:462.50 KB
页数:18页
时间:2018-09-20
《数据结构课程设计报告-哈希表设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、数据结构课程设计报告题目:哈希表设计院(系):计算机工程学院专业:计算机科学与技术班级:嵌入式1091学生:指导教师:2010年12月16目录一、设计目的1二、设计内容1三、程序设计步骤2四、调试分析11五、测试结果11六、课程设计小结1616一、设计目的1、学会根据实际问题建立哈希表,并实现其查找功能。2、理解哈希表的思想就是以借点的关键字K为变量,通过一个确定的函数关系f,计算出对应的函数值f(k),把这个函数值解释为结点的存储地址,将该结点存入f(k)所指示的存储位置上,这样建立的表称为哈希表。3、学会使用除留余数法获得哈希地址。4、学会使用再地址方法解决哈希冲突问题。5、学会查阅
2、书籍,自我思考,解决实际问题。二、设计内容1、系统名称:哈希表设计针对自己班集体中的“人名”设计一个哈希表,使得平均查找长度不超过R,完成相应的建表和查表程序。2、要求:(1)设计一个哈希表,用来存放30个人名。(2)要求人名为中国姓名的汉语拼音形式。(3)要求用除留余数法构造哈希函数,用线性探查法解决哈希冲突。(4)本设计实现的功能:①建立哈希表并且将其显示出来。②通过要查找的关键字用哈希函数计算出相应的地址来查找人名。16三、程序设计步骤1)查找功能分析说明:本实验最关键的是实现哈希表的查找功能,因为元素的地址可能存在同义词,所以便会存在查找冲突,关键的就是解决这种冲突问题。哈希中解
3、决冲突的方法有很多种,这里采用线性探查法解决冲突。通过构造函数d=(d+Hash(key))%p,若数据元素在存储地址d发生冲突,则放到存储地址(d1+k)%m;若又发生冲突则放到存储地址(d2+k)%m;若再发生冲突则放到存储地址(d3+k)%m;……;直到碰到第一个为空的存储地址(di+k)%m,则将数据元素存放在该存储空间。查找的功能分析说明图如下:开始输入要查找的姓名判断是否冲突线性探查法输出否是是否冲突否是162)代码分析:#include#defineHASH_LEN50/*哈希表长度*/#defineM47/*定义P值*/#defineNAME_NO30/
4、*人名个数*/typedefstructNAME{char*py;/*名字拼音*/intk;/*拼音所对应的整数*/}NAME;NAMENameList[HASH_LEN];typedefstructhterm/*哈希表*/{char*py;/*名字的拼音*/intk;/*拼音所对应的整数*/intsi;/*查找长度*/}HASH;HASHHashList[HASH_LEN];/*-----------------姓名(结构体数组)初始化----------------*/voidInitNameList(){inti;char*f;intr,s0;NameList[0].py="bia
5、nshan";NameList[1].py="dengtao";NameList[2].py="dingjun";NameList[3].py="fanyongliang";NameList[4].py="wangchen";NameList[5].py="wangrong";NameList[6].py="zhouyu";NameList[7].py="liuyuanlong";NameList[8].py="wuliang";NameList[9].py="wulingjie";NameList[10].py="wangzhaocai";NameList[11].py="yujia"
6、;NameList[12].py="zhangzhefu";NameList[13].py="zhangnannan";NameList[14].py="zhoujie";NameList[15].py="yuanhunan";NameList[16].py="lichunfeng";NameList[17].py="lishiyan";NameList[18].py="zhouxiaoqing";16NameList[19].py="liuwei";NameList[20].py="niliquan";NameList[21].py="qinyao";NameList[22].py="
7、zhuchengwei";NameList[23].py="lvshuai";NameList[24].py="qiuyan";NameList[25].py="gutianyun";NameList[26].py="zhoupei";NameList[27].py="chenjinmei";NameList[28].py="zhouxu";NameList[29].py="zhaoliping";for(i=0;i
此文档下载收益归作者所有