(新数据结构课程设计.docxVIP

  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文档。上传文档
查看更多
(新数据结构课程设计

《数据结构》实验报告姓名: 学号:班级: email:题目:单词(词组)检索现在有一个英文字典(每个单词都是由小写的a-z组成) ,单词量很大,达到 100 多万的单词,而且还有很多重复的单词。 此外,我们现在还有一些 Document,每个 Document 包含一些英语单词。 针对这个问题,请你选择合适的数据结构,组织这些数据,使时间复杂度和空间复杂度尽可能低,并且解决下面的问题和分析自己算法的时间复杂度。实验目的:在本次课程设计中,希望同学们根据自己所学的知识,查找相关的资料,构造合适的数据结构,尽自己最大的努力解决这些问题,从而使自己学到更多新的知识。实验内容:1)基本型问题 (1)选择合适的数据结构,将所有的英文单词生成一个字典 Dictionary。 (2)给定一个单词,判断这个单词是否在字典 Dictionary中。如果在单词库中,输出这个单词总共出现的次数。否则输出 NO扩展:2)扩展型问题 (3)给定一个单词,按字典序输出字典 Dictionary 中所有以这个单词为前缀的单词。例如,如果字典 T={a,aa, aaa, b, ba}, 如果你输入 a,那么输出应该为{a, aa, aaa}。 (4)给定一个单词,输出在Dictionary 中以这个单词为前缀的单词的出现频率最高的10个单词,对于具有相同出现次数的情况,按照最近(即最后)插入的单词优先级比较高的原则输出。 (5)输出 Dictionary 中出现次数最高的 10个单词。 3)高级型问题 (6)现在我们有一些 Document,每个 Document 由一些单词组成,现在的问题就是给你一个word,检索出哪些 Document包含这个 word, 输出这些Document的DocumentID(就如同搜索引擎一样,即输入一些关键字,然后检索出和这些关键字相关的文档) 。 (7)在第(6)问中,我们只考虑了一个 word 在哪些 Document 中的情况,我们进一步考虑 2 个相邻 word 的情况,检索出同时包含这两个相邻word的DocumentID。 4)挑战型问题 (8) 现在我们再对(7)的问题进行扩展,把(7)中的只检索相邻 2个word 推广到可以检索多个word(即连续的k个word,其中k=2) ,检索出同时包含k个连续word 的DocumentID。需求分析本程序无需输入,直接打开文档读入数据,进行一系列操作。程序的输出结果直接写入文档,不在运行界面显示。shuju文件夹下的 vocabulary.txt 是英文字典的数据总共有 100 多万个单词,即问题(1)~(5)中单词库。其余数据分别放在其余文件SearchWordInVocabulary.txt, SearchWordInVocabulary_Result.txt,PrefixFrequence.txt,  PrefixFrequence_Result.txt,TotPrefixWord.txt TotPrefixWord_Result.txt中。思想设计为实现要求首先建立以字符串哈希哈希散列表基本操作建立哈希表,哈希表表长,在哈希表上进行查找的过程和哈希造表的过程基本一致。给定K值,根据造表时设定的哈希函数求得哈希地址,若表中此位置上没有记录,则查找不成功。若有记录,则比较关键字,若和给定值相同,则查找成功;若关键字不同,则根据造表时设定的处理冲突的方法找“下一地址”,直至哈希表中某个位置为“空”或者表中所填记录的关键字等于给定值时为止。程序查找操作:在第一问的基础上进行查找,找到单词则输出出现次数,否则输出NO。 在第一问的基础上查找前缀单词,然后输出到一个空文件上给第三问的前缀单词按出现次数排序,然后输出前10个直接输出建树时出现频率最高的10个单词三.操作概要设计1.基本操作:哈希表的建立;哈希表的遍历;文件的使用;优先级的判断 2. 本程序包含一下几个模块 :(1)哈希表的建立模块(2)查找单词单词模块(3)查找前缀单词模块(4)检索前缀单词出现频率模块(5)输出频率最高的十个单词模块(6)主函数模块基本型问题模块调用图一 主函数模块int main(){Wordlist wordlist={0};createDictionary(wordlist);search(wordlist);MAX10paixu(wordlist);return 0;}二  定义哈希表 struct Wordnode{ //哈希链表结点int num; //单词的权值string word; //单词Wordnode* next; //指向下一结点指针

文档评论(0)

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

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

1亿VIP精品文档

相关文档