西北工业大学数据结构课程方案实验报告

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

西北工业大学数据结构课程方案实验

报告

-- 数据结构

课程设计实验报告

学院:

班级:

姓名:

学号:

邮箱:

日期: 1月17日

《数据结构》实验报告

◎实验题目:单词<词组)检索

◎实验内容:现在有一个英文字典<每个单词都是由小写的'a'-'z'组成),单词量很大,达到100多万的单词,而且还有很多重复的单词。另外,我们现在还有一些Document,每个Document 包含一些英语单词。

针对这个问题,请你选择合适的数据结构,组织这些数据,使时间复杂度和空间复杂度尽可能低,而且解决下面的问题和分析自己算法的时间复杂度。

1)基本型问题<必须采用字符串哈希,hash散列算法)

<1)将所有的英文单词生成一个字典Dictionary。

<2)给定一个单词,判断这个单词是否在字典Dictionary中。如果在单词库中,输出这个单词总共出现的次数。否则输出NO。<3)输出Dictionary中出现次数最高的10个单词。<必须采用快速排序或堆排序算法)

2)扩展型问题<可选择合适的数据结构)

<4)给定一个单词,按字典序输出字典 Dictionary 中所有以这个单词为前缀的单词。例如,如果字典 T={a,aa, aaa, b, ba}, 如果你输入a,那么输出应该为{a, aa, aaa}。

<5)给定一个单词,输出在Dictionary 中以这个单词为前缀的单词的出现频率最高的10个单词,对于具有相同出现次数的情况,按照最近<即最后)插入的单词优先级比较高的原则输出。

对于以下问题,需采用2种不同的数据结构

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。

◎实验目的:学会使用哈希函数检索,运用指定要求算法,解决一系列单词检索问题。

一.需求分析

1.本演示程序中,由程序读取文件,根据程序要求自动生成所需要的文件。

2.演示程序执行结束后,由计算机终端显示“提示信息”,以示

某一问题完成与否。

3.程序执行的命令包括:

(1)读取文件;<2)构造字典;<3)实现查找;<4)实现排序;<4)写入结果。

二.概要设计

为了实现上述操作,采用顺序表存储结构。

1.基本操作

Create_HashTable<)

操作结果:读取文件,生成一个字典Dictionary。

Search_Data(HNode Hash[]>

初始条件:存在一个顺序表Hash;

操作结果:读取文件,查找单词在字典Dictionary对应的出现次数,并写入另一文件;若不在字典Dictionary中,则写入NO。Sort_Count(HNode Hash[]>

初始条件:存在一个顺序表Hash;

操作结果:查找出现次数最高的10个单词,并写入另一文件。Same_PrefixData(HNode Hash[]>

初始条件:存在一个顺序表Hash;

操作结果:读取文件中的单词,查找字典Dictionary中以此单词为前缀的所有单词,并以字典序写入另一文件;若不存在,则写入空。

相关文档
最新文档