《算法与数据结构.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《算法与数据结构

CQJT UNIVERSITY 课程实习报告 题 目: 重名剔除(Deduplicate) 学生姓名 席源江 学生学号 631306020114 专业班级 电子信息工程1班 指导老师 刘君 完 成 日 期 2015/5/16 一、需求分析 本程序要求采用散列算法,输入提名清单的数目(不要超过113)和每一项提名(字符数不要超过20)。 输出重复的提名,若有多次重复提名,只输出一次重复的提名,并将无重复提名的清单输出。 程序所要达到的功能是重名剔除并无重名输出。 二、概要设计 抽象数据类型 为实现上述程序的功能,应以整数存储用户的输入的提名清单数目,用字符串接受清单名字及输出无重名清单。 算法的基本思想 根据题目要求,采用散列法来保存清单。散列法分为两部分: 散列函数:除留余数法. 我特意将清单的数目记为113,113是素数,运用该方法比较好,我们的关键字是一个字符串,我们首先求出字符串的长度,即所含字符的个数,接着把每个字符的ASCII码累加到无符号整量h上,因为怕h超出范围,故h为无符号长整形,并在每次累加前把h的值左移3个二进制; 处理冲突的方法:开放定址法 冲突的处理并未考虑堆积,本例数目较少,故开放定址法是合适的。 程序的流程 程序由三个模块组成: 输入模块:主函数中我们接受数目和每一项清单名字。 计算模块:通过函数hash找出重名的清单名字,并将清单散列,该模块包括了部分输出的模块。 输出模块:部分包含在hash函数中,另一部分是将无重名的清单输出。 三、详细设计 物理数据类型 题目要求输入的正整数的取值范围在(0, 113)之间,且每一项的名字最多为20个字符,为了能够存储,采用C语言中的长整型定义变量。 typedef long elemtype 算法的时空分析 算法的运行时间依赖与待输入的数目和每项清单名字的字符,若设它们分别为n、m,则可以大致求出时间为O(nm)。 输入和输出的格式 输入 Please input the length of nomination list(less than 113). //提示 等待输入 Then input the nomination(each nomination is given in each line,each nominationlength less than 20 characters). //提示 等待输入 输出 The duplication of name is: //提示 输出结果 The list: // 输出结果 四、调试分析 五、测试结果 实验心得 通过这次的实验,让我对散列有了一定的了解,散列是我之前没有学过的,此次通过视频以及查阅相关书籍学习,编程过程中遇到了不少困难,但在不断努力下,最终一一解决,由此可见,坚持才是最后的胜利。我们会在今后的学习中积极搜集知识,自己刻苦学习。 七、附录 程序部分: // last.cpp : Defines the entry point for the console application. // #include stdafx.h #include string.h #include iostream.h #include stdio.h #include stdlib.h void hash(struct node array1[],struct node array2[],int n,int m); void output(char a[]); void list(struct node array2[]); int trans; typedef char elemtype; struct node { elemtype s[20]; int pos; int flag; }; void hash(struct node array1[],struct node array2[],int n,int m) { int len,i,j,buff,initial; unsigned long h=0; coutThe

文档评论(0)

haha85864 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档