1、数据结构课程设计报告撰写模板参考数据结构课程设计报告撰写模板参考1.1 输入的形式和输入值的范围 1.2 输出的形式 1.3 程序所能达到的功能 1.4 测试数据:包括正确的输入及其输出结果和含有错误的输入及其输出结果 3.1 姓名(结构体数组)初始化3.2 建立哈希表 . 3.2.1 用除留余数法构建哈希函数. 3.2.2 用伪随机探测再散列法处理冲突.1需求分析以无歧义的陈述说明程序设计的任务,强调的是程序要做什么?并明确规定:1.1 输入的形式和输入值的范围;1.2 输出的形式;1.3 程序所能达到的功能;1.4 测试数据:包括正确的输入及其输出结果和含有错误的输入及其输出结果。2概要设
2、计(系统概要、基本功能要求)说明本程序中用到的所有抽象数据类型的定义、主程序的流程以及各程序模块之间的层次(调用)关系。存储结构设计typedef struct char *py; /名字的拼音 int k; /拼音所对应的整数NAME; typedef struct /哈希表 char *py; /名字的拼音 int k; /拼音所对应的整数 int si; /查找长度HASH;3详细设计(列出函数首部+注释) 例如:void show(listlink head) /*显示所有的信息*/实现概要设计中定义的所有数据类型,对每个操作只需要写出伪码算法;对主程序和其它模块也都需要写出伪码算法(
3、伪码算法达到的详细程度建议为:按照伪码算法能够在计算机键盘直接输入高级程序设计语言程序);可采用流程图 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.p
4、y=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.p
5、y=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=
6、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.
7、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); Has
8、hListd.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)
9、 /分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 显示哈希表 显示
10、哈希表的的格式: 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) cas
11、e D:Display(); coutendl;break; case F:FindList();coutendl;break; case Q:exit(0); cout&ch1; while(ch1!=n); 4调试分析内容包括:4.1调试过程中遇到的问题是如何解决的以及对设计与实现的回顾讨论和分析;题目中明确规定了用除留余数法创立哈希函数和用伪随机探测再散列法处理冲突,程序设计的方法几乎已经被规定,只要按照题目要求写程序不会太难。不过在写程序过程中还是发现了一些小问题,主要是因为自己上机试验少,以后多上机实践能够避免的。b算法的时空分析(包括基本操作和其它算法的时间复杂度和空间复杂度的分析)和改进设想;c经验和体会等。5用户使用说明说明如何使用你编写的程序,详细列出每一步的操作步骤。6测试结果列出你的测试结果,包括输入和输出。这里的测试数据应该完整和严格,最好多于需求分析中所列。7参考文献列出参考的相关资料和书籍。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1