数据结构课程设计报告撰写模板(参考).doc_第1页
数据结构课程设计报告撰写模板(参考).doc_第2页
数据结构课程设计报告撰写模板(参考).doc_第3页
数据结构课程设计报告撰写模板(参考).doc_第4页
数据结构课程设计报告撰写模板(参考).doc_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

目录1需求分析21.1 输入的形式和输入值的范围1.2 输出的形式1.3 程序所能达到的功能1.4 测试数据:包括正确的输入及其输出结果和含有错误的输入及其输出结果2概要设计23详细设计23.1 姓名(结构体数组)初始化3.2 建立哈希表 . 3.2.1 用除留余数法构建哈希函数. 3.2.2 用伪随机探测再散列法处理冲突.4调试分析25用户使用说明26测试结果27参考文献21需求分析以无歧义的陈述说明程序设计的任务,强调的是程序要做什么?并明确规定:1.1 输入的形式和输入值的范围;1.2 输出的形式;1.3 程序所能达到的功能;1.4 测试数据:包括正确的输入及其输出结果和含有错误的输入及其输出结果。2概要设计(系统概要、基本功能要求)说明本程序中用到的所有抽象数据类型的定义、主程序的流程以及各程序模块之间的层次(调用)关系。存储结构设计typedef struct char *py; /名字的拼音 int k; /拼音所对应的整数NAME; typedef struct /哈希表 char *py; /名字的拼音 int k; /拼音所对应的整数 int si; /查找长度HASH;3详细设计(列出函数首部+注释) 例如:void show(listlink head) /*显示所有的信息*/实现概要设计中定义的所有数据类型,对每个操作只需要写出伪码算法;对主程序和其他模块也都需要写出伪码算法(伪码算法达到的详细程度建议为:按照伪码算法可以在计算机键盘直接输入高级程序设计语言程序);可采用流程图 N S 图或PAD图进行描述,画出函数和过程的调用关系图。3.1 姓名(结构体数组)初始化 名字以拼音的形式够成字符串,将字符串的各个字符所对应的ASCII码相加,所得的整数做为哈希表的关键字。void InitNameList() char *f; int r,s0,i; NameList0.py=zengqinghui; NameList1.py=mayuelong; NameList2.py=chenzhicheng; NameList3.py=sunpeng; NameList4.py=wanghui; NameList5.py=liqingbo; NameList6.py=liujunpeng; NameList7.py=jiangquanlei; NameList8.py=xingzhengchuan; NameList9.py=luzhaoqian; NameList10.py=gaowenhu; NameList11.py=zhuhaoyin; NameList12.py=chenlili; NameList13.py=wuyunyun; NameList14.py=huangjuanxia; NameList15.py=wangyan; NameList16.py=zhoutao; NameList17.py=jiangzhenyu; NameList18.py=liuxiaolong; NameList19.py=wangziming; NameList20.py=fengjunbo; NameList21.py=lilei; NameList22.py=wangjia; NameList23.py=zhangjianguo; NameList24.py=zhuqingqing; NameList25.py=huangmin; NameList26.py=haoyuhan; NameList27.py=zhoutao; NameList28.py=zhujiang; NameList29.py=lixiaojun; for(i=0;iNAME_NO;i+) s0=0; f=NameListi.py; for(r=0;*(f+r)!=0;r+) */将字符串的各个字符所对应的ASCII码相加,所得的整数做为哈希表的关键字*/ s0=*(f+r)+s0; NameListi.k=s0; 3.2 建立哈希表 3.2.1 用除留余数法构建哈希函数 3.2.2 用伪随机探测再散列法处理冲突void CreateHashList() int i; for(i=0; iHASH_LENGTH;i+) HashListi.py=; HashListi.k=0; HashListi.si=0; for(i=0;iHASH_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+NameListi.k%10+1)%M; /伪随机探测再散列法处理冲突 sum=sum+1; /查找次数加1 while (HashListd.k!=0); HashListd.k=NameListi.k; HashListd.py=NameListi.py; HashListd.si=sum+1; 3.3 查找哈希表 在哈希表中进行查找,输出查找的结果和关键字,并计算和输出查找成功的平均查找长度void FindList() char name20=0; int s0=0,r,sum=1,adr,d; printf(请输入姓名的拼音:); scanf(%s,name); for(r=0;r20;r+) /求出姓名的拼音所对应的整数(关键字) s0+=namer; adr=s0%M; /使用哈希函数 d=adr; if(HashListadr.k=s0) /分3种情况进行判断 printf(n姓名:%s 关键字:%d 查找长度为: 1,HashListd.py,s0); 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(无此记录! ); 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; i50; i+) printf(%d ,i); printf(t%d ,HashListi.k); printf(tt%d ,HashListi.si); printf(tt%d ,HashListi.k%M); printf(t %s ,HashListi.py); printf(n); for(i=0;i&ch1;switch(ch1)case D:Display(); coutendl;break;case F:FindList();coutendl;break;case Q:exit(0);cout&ch1;while(ch1!=n); 4调试分析内容包括:4.1调试过程中遇到的问题是如何解决的以及对设计与实现的回顾讨论和分析;题目中明确规定了用除留余数法创建哈希函数和用伪随机探测再散列法处理冲突,程序设计的方法几乎已经被规定,只要按照题目要求写程序不会太难。不过在写程序过程中还是发现了一些小问题,主要是因为自

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论