数据结构试验报告-文学研究助手

更新时间:2023-04-28 00:41:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

实验报告:文学研究助手

题目:编写一个统计特定单词在文本中出现的次数和位置的程序

一、需求分析

1.文本串非空并以文件的形式存放在根目录中,统计匹配的词非空。

文件名和需要匹配的词集均有用户从键盘输入;

2.单词都是由某种类型字符的序列组成,如字母字符序列(区分大

小写)、数值常数(整数或小数型实数)字符序列, 界符(分隔符(‘(’,‘)’,‘,’等)、运算符等(‘+’,‘-’,‘*’,‘/’等)可独立构成单词,中间不含空格并且区分大小写;

3.待统计的“单词”在文本串中不跨行出现,它或者从行首开始,

或者前置若干空格字符;

4.在计算机终端输出的结果是:单词,出现的次数,出现的位置所

在行的行号,若一个单词在同一行出现多次只输出一个行号;5.测试数据:本次实验中的文本文件是LiteratureAssitant.cpp;

待统计的词集为:

If char int else for return void

二、概要设计:

1. 定义“单词”类型:

ADT Aword{

数据对象:D={Si | Si ∈标准c字符串集合,i = 1,2,3,…….,n,n

1 / 1文档可自由编辑

≥ 0}

数据关系:R1={} | Si-1,Si ∈ D,i = 1,2,3,…..,n}基本操作:

NewWord(WordType *nw,Sequence cha)

初始条件:cha为字符序列;

操作结果:生成一个其值为给定字符序列的单词;

WordCmp(WordType wd1,WordType wd2)

初始条件:单词wd1和单词wd2已存在;

操作结果:若wd1wd2,则返

回1;

PrintWord(WordType wd)

初始条件:单词wd已存在;

操作结果:在计算机终端上显示单词wd;

}ADT AWord

2. 定义有序表类型:

ADT OrderList{

数据对象:D={Si | Si ∈AWord,i = 1,2,3,…….,n,n ≥ 0}

数据关系:R1={} | Si-1,Si ∈D,Si-1

基本操作:

InitList(OrderList *L)

1 / 1文档可自由编辑

操作结果:构造一个空的有序表;

DestroyList(OrderList *L)

初始条件:有序表L已存在;

操作结果:销毁L的结构,并释放所占空间;

LocateElem(OrderList L,ElemType e,LinkType *q)

初始条件:有序表L已存在;

操作结果:若有序表L中存在元素e,则q指示L中第一个值为e的元素的位置,

并返回函数值FRUE;否则q指示第一个大于e的元素的前驱的位置,

并返回函数值FALSE;

InsertAfter(OrderList *L,LinkType q,LinkType s)

初始条件:有序表L已存在,q指示L中一个元素;

操作结果:在有序表L中q指示的元素之后插入元素s;

ListCompare(OrderList La,OrderList Lb,EqelemList *s) 初始条件:有序表La和Lb已存在;

操作结果:以s返回其中相同元素;

}ADT OrderList

3. 定义单词文本串文件类型如下:

ADT TextString{

数据对象:D={Si | Si ∈标准c字符集,i = 1,2,3,…….,n,n ≥0};

1 / 1文档可自由编辑

数据关系:D中字符被“换行符”分割成若干行,每一行的字符间满足下列关系:

R1={} | Si-1,Si ∈ D,i = 1,2,3,…..,n}基本操作:

Initialization(FILE **fr)

初始条件:文件fr已存在;

操作结果:打开文件fr,设定文件指针指向文件中第一行第一个字符;

GetAWord(FILE *f,Sequence *st)

初始条件:文件f已打开;

操作结果:从文件指针所指字符起提取一个“单词st”;ExtractWord(FILE *f,OrderList *ta)

初始条件:文件f已打开,文件指针指向文件f中某一行的第一个字符;

操作结果:提取该行中所有单词,并构成单词的有序表ta,本操作结束时,文件指针

指向文件f中下一行的第一个字符;

match(FILE *f,OrderList pat,ResultType rs)

初始条件:文件f已打开,文件指针指向文件f中第一个字符;pat为包含所有待查

询单词的有序表;

操作结果:rs为查询结果;

1 / 1文档可自由编辑

}ADT TextString

4. 本程序包含四个模块:

1)主程序模块:主函数设计如下

int main ( ) {

输入信息和文件初始化;

生成测试目标词汇表;

统计文件中每个待测单词出现的次数和位置;

输出测试结果;

};

2)单词单元模块-------实现单词类型;

3)有序表单元模块--------实现有序表类型;

4)单词文本串文件单元模块------实现文本串文件类型;

5、存储结构及存储映像为:

6、函数的调用关系为:

main

1 / 1文档可自由编辑

1 / 1文档可自由编辑 Initialization InputWord

ListEmpty

OutResult match DestroyList

InitList MakeNode NewWord WordCmp

MakeNode CopyWord ExtractWord ListCompare NewLength

Felon

GetAWord

MakeNode InsertAfter 三、 详细设计:

// LiteratureAssitant.cpp : Defines the entry point for the console application.

//

#include "stdafx.h"

#include "stdafx.h"

// LiteratureAssitant.cpp : 定义控制台应用程序的入口点。

#include "stdafx.h"

#include "stdio.h"

#include "string.h"

#include

#include

本文来源:https://www.bwwdw.com/article/i2gq.html

Top