


版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数据结构课程设计报告撰写模 板(参考)目录1需求分析 31.1输入的形式和输入值的范围 1.2输出的形式1.3程序所能达到的功能 1.4测试数据:包括正确的输入及其输出结果和含有错误的输入及其输出结果2概要设计 43详细设计 53.1 姓名(结构体数组)初始化3.2 建立哈希表 3.2.1用除留余数法构建哈希函数 .3.2.2 用伪随机探测再散列法处理冲突 .4调试分析 115用户使用说明 126测试结果 131需求分析以无歧义的陈述说明程序设计的任务,强调的是程序要做什么?并明确规定:1.1输入的形式和输入值的范围;1.2输出的形式;1.3程序所能达到的功能;1.4测试数据:包括正确的输入及
2、其输出结果和含有错误的输入及其输出结果。2概要设计(系统概要、基本功能要求)说明本程序中用到的所有抽象数据类型的定义、主程序的流程以及各程序模块之间的层次(调用)关系。存储结构设计typedef struct char *py; II名字的拼音int k; II拼音所对应的整数NAME;typedef struct / char *py; /int k;/int si;/HASH;哈希表名字的拼音拼音所对应的整数查找长度3详细设计(列出函数首部 +注释)例如:void show(listlink head) /*显示所有的信息*/实现概要设计中定义的所有数据类型,对每个操作只需要写出伪码算法;
3、对主程序和其他模块也都需要写出伪码算法(伪码算法达到的详细程度建议为:按照伪码算法可以在计算机键盘直接输入高级程序设计语言程序);可采用流程图N - S图或PAD图进行描述,画出函数和过程的调用关系图。3.1 姓名(结构体数组)初始化名字以拼音的形式够成字符串,将字符串的各个字符所对应的 ASCII码相加, 所得的整数做为哈希表的关键字。void Ini tNameList() char *f;int r,sO,i;NameListO.py="ze ngqin ghui"NameList1.py="mayuelo ng"NameList2.py=&quo
4、t;che nzhiche ng"NameList3.py="s unpen g"NameList4.py="wa nghui"NameList5.py="liqi ngbo"NameList6.py="liuju npen g"NameList7.py="jia ngqua nl ei"NameList8.py="xi ngzhe ngchua n"NameList9.py="luzhaoqia n"NameList10.py="ga
5、owe nhu"NameList11.py="zhuhaoyi n"NameList12.py="che nlili"一NameList13.py="wuy un yu n"NameList14.py="hua ngjua nxia"NameList15.py="wa ngya n"NameList16.py="zhoutao"NameList17.py="jia ngzhe ny u"NameList18.py="liuxiaolo
6、ng"NameList19.py="wa ngzi min g"NameList20.py="fe ngjun bo"NameList21.py="lilei"NameList22.py="wa ngjia"NameList23.py="zha ngjia nguo"NameList24.py="zhu qingqin g"NameList25.py="hua ngmi n"NameList26.py="haoyuha n"N
7、ameList27.py="zhoutao"NameList28.py="zhujia ng"NameList29.py="lixiaoju n"for(i=0;i<NAME_NO;i+) s0=0;f=NameListi.py;for(r=0;*(f+r)!='0'r+)*/将字符串的各个字符所对应的ASCII码相加,所得的整数做为哈希表的关键字*/sO=*(f+r)+sO;NameListi.k=sO;3.2 建立哈希表用除留余数法构建哈希函数3.2.2 用伪随机探测再散列法处理冲突void CreateHa
8、shList() int i;for(i=0; i<HASH_LENGTH;i+) HashListi.py=""HashListi.k=0;HashListi.si=0;for(i=0;i<HASH_LENGTH;i+) int sum=0;哈希函数如果不冲突int adr=(NameListi.k)%M; /int d=adr;if(HashListadr.si=0) / HashListadr.k=NameListi.k;HashListadr.py=NameListi.py;HashListadr.si=1;else /冲突 do d=(d+NameLi
9、sti.k%10+1)%M; /伪随机探测再散列法处理冲突sum=sum+1;/查找次数加1while (HashListd.k!=0);HashListd.k=NameListi.k;HashListd.py=NameListi.py;HashListd.si=sum+1;3.3 查找哈希表在哈希表中进行查找,输出查找的结果和关键字,并计算和输出查找成功的 平均查找长度void Fin dList() char name20=0;int s0=0,r,sum=1,adr,d;printf("请输入姓名的拼音:");scan f("%s", name);
10、for(r=0;r<20;r+) /求出姓名的拼音所对应的整数(关键字)s0+=n amer;adr=s0%M; /使用哈希函数d=adr;if(HashListadr.k=sO) /分 3 种情况进行判断printf("n姓名:%s关键字:%d查找长度为:1",HashListd.py,sO);else if (HashListadr.k=0)printf("无此记录!");else int g=0;do d=(d+s0%10+1)%M;/伪随机探测再散列法处理冲突sum=sum+1;if(HashListd.k=0) printf("
11、无此记录!");g=1;if(HashListd.k=s0) printf("n姓名:%s关键字:%d 查找长度为:%d",HashListd.py,s0,sum);g=1;while(g=0);3.4显示哈希表显示哈希表的的格式:n 地址t关键字tt 搜索长度tH(key)t姓名nvoid Display。 int i;float average=0;显示的printf("n 地址t关键字tt 搜索长度tH(key)t 姓名n"); / 格式for(i=0; i<50; i+) prin tf("%d ",i);pr
12、in tf("t%d ",HashListi.k);prin tf("tt%d ",HashListi.si);prin tf("tt%d ",HashListi.k%M);prin tf("t %s ",HashListi.py);prin tf("n");for(i=0;i<HASH_LENGTH;i+)average+=HashListi.si;average/=NAME_NO;prin tf("n平均查找长度:ASL(%d)=%f n",NAME_NO,aver
13、age);3.5 主函数设计void mai n() char ch1;Ini tNameList();CreateHashList ();doprintf("D.显示哈希表nF.查找nQ.退出n请选择:");cin>>&ch1;switch(ch1)case D:Display(); cout<<e ndl;break;case 'F':Fi ndList();cout<<e ndl;break;case Q:exit(0);cout«"come on !(y/n):"cin>>&ch1;while(ch1!=' n');4调试分析内容包括:4.1调试过程中遇到的问题是如何解决的以及对设计与实现的回顾讨论和分析;题目中明确规定了用除留余数法创建哈希函数和用伪随机探测再散列法处理冲突, 程序设计的方法几乎已经被规定,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 信息化技术在农业生产中的合作协议
- 农民工在岗培训与劳务派遣合同
- 购买物业管理服务协议书
- 农业生产经营资金互助保障协议
- 智慧寓言伊索寓言故事解读
- 高考语文复习:专题六、七
- 体育培训中心学员意外事故的免责及保障协议
- 高考文言文断句100题专项练习(附答案及翻译最方便)
- 小马过河自我成长的故事解读
- 农业旅游开发手册
- 2024年福建省厦门市翔安区残疾人联合会招聘残疾人工作联络员29人历年重点基础提升难、易点模拟试题(共500题)附带答案详解
- 幼儿园家长会疾病预防
- 《储粮害虫防治技术》课件-第六章 储粮保护剂及其应用
- 排水管道施工组织设计排水管道施工组织设计排水施工排水管道施工施工设计
- 人工智能科普教育活动方案设计
- 2024未来会议:AI与协作前沿趋势白皮书
- 2024年广东普通专升本《公共英语》完整版真题
- 国家中长期科技发展规划(2021-2035)
- 中国民族音乐的宫庭音乐
- 单原子催化剂的合成与应用
- 水利工程施工验收规范对工程监理单位的要求
评论
0/150
提交评论