文学研究助手数据结构课程设计Word文档下载推荐.doc

上传人:b****1 文档编号:13114867 上传时间:2022-10-05 格式:DOC 页数:19 大小:245.50KB
下载 相关 举报
文学研究助手数据结构课程设计Word文档下载推荐.doc_第1页
第1页 / 共19页
文学研究助手数据结构课程设计Word文档下载推荐.doc_第2页
第2页 / 共19页
文学研究助手数据结构课程设计Word文档下载推荐.doc_第3页
第3页 / 共19页
文学研究助手数据结构课程设计Word文档下载推荐.doc_第4页
第4页 / 共19页
文学研究助手数据结构课程设计Word文档下载推荐.doc_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

文学研究助手数据结构课程设计Word文档下载推荐.doc

《文学研究助手数据结构课程设计Word文档下载推荐.doc》由会员分享,可在线阅读,更多相关《文学研究助手数据结构课程设计Word文档下载推荐.doc(19页珍藏版)》请在冰豆网上搜索。

文学研究助手数据结构课程设计Word文档下载推荐.doc

1.定义“单词”类型:

ADTAword{

数据对象:

D={Si|Si∈标准c字符串集合,i=1,2,3,…….,n,n≥0}

数据关系:

R1={<

Si-1,Si>

}|Si-1,Si∈D,i=1,2,3,…..,n}

基本操作:

NewWord(WordType*nw,Sequencecha)

初始条件:

cha为字符序列;

操作结果:

生成一个其值为给定字符序列的单词;

WordCmp(WordTypewd1,WordTypewd2)

单词wd1和单词wd2已存在;

若wd1<

wd2,则返回-1;

若wd1=wd2,则返回0;

若wd1>

wd2,则返

回1;

PrintWord(WordTypewd)

单词wd已存在;

在计算机终端上显示单词wd;

}ADTAWord

2.定义有序表类型:

ADTOrderList{

D={Si|Si∈AWord,i=1,2,3,…….,n,n≥0}

}|Si-1,Si∈D,Si-1<

S,i=1,2,3,…..,n}

基本操作:

InitList(OrderList*L)

构造一个空的有序表;

DestroyList(OrderList*L)

有序表L已存在;

销毁L的结构,并释放所占空间;

LocateElem(OrderListL,ElemTypee,LinkType*q)

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

并返回函数值FRUE;

否则q指示第一个大于e的元素的前驱的位置,

并返回函数值FALSE;

InsertAfter(OrderList*L,LinkTypeq,LinkTypes)

有序表L已存在,q指示L中一个元素;

在有序表L中q指示的元素之后插入元素s;

ListCompare(OrderListLa,OrderListLb,EqelemList*s)

有序表La和Lb已存在;

以s返回其中相同元素;

}ADTOrderList

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

ADTTextString{

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

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

R1={<

基本操作:

Initialization(FILE**fr)

初始条件:

文件fr已存在;

操作结果:

打开文件fr,设定文件指针指向文件中第一行第一个字符;

GetAWord(FILE*f,Sequence*st)

文件f已打开;

从文件指针所指字符起提取一个“单词st”;

ExtractWord(FILE*f,OrderList*ta)

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

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

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

match(FILE*f,OrderListpat,ResultTypers)

文件f已打开,文件指针指向文件f中第一个字符;

pat为包含所有待查

询单词的有序表;

rs为查询结果;

}ADTTextString

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

1)主程序模块:

主函数设计如下

intmain(){

输入信息和文件初始化;

生成测试目标词汇表;

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

输出测试结果;

};

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

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

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

主程序模块

各模块间的调用关系如下:

文本文件单元模块

有序表单元模块-

单词单元模块

四、详细设计

1、主程序中的宏定义:

#defineMAXSIZE1000 //字符空间的最大容量

#defineMAXLEN20//单词的最大长度

#defineMAXNUM16 //一行中单词最多个数

#defineFALSE0

#defineTRUE1

2、存储结构

/**

* 堆结构的定义

*/

typedefstruct{

charstores[MAXSIZE];

intfreep;

/*当前可用空间开始位置*/

}HeapSpace;

HeapSpacesp;

* 单词数据类型定义

typedefstruct{//单词在堆中的位置描述

intstadr;

/*单词在对空间中的开始位置*/

intlen;

/*单词长度*/

}WordType;

typedefstruct{//单词描述

charch[MAXLEN];

/*单词字符串*/

intsize;

/*单词长度*/

}Sequence;

* 有序表类型定义

typedefWordTypeElemType;

typedefstructNodeType{//单词有序表结点定义

ElemTypedata;

structNodeType*next;

}NodeType,*LinkType;

typedefstruct{//单词有序表定义

LinkTypehead;

/*有序表头指针*/

LinkTypetail;

/*有序表尾指针*/

/*有序表结点个数*/

}OrderList;

* 记录一行中匹配成功单词在目标词汇表中的位置

inteqelem[MAXNUM];

/*单词在目标词汇表中的位置*/

intlast;

/*匹配成功单词的个数*/

}EqelemList;

* 文件测试相关的数据类型定义

typedefstructNode{//单词在文件中的位置

intelem;

/*被测单词在文件中的行号*/

structNode*next;

/*指向下一个行号结点的指针*/

}Node,*Link;

typedefstruct{//单词统计分析记录结构定义

WordTypedata;

/*被测试的单词*/

intcount;

/*在文件中出现的次数*/

LinkNext;

/*记录出现的所有行号的脸表头指针*/

}HeadNode;

* 文本文件测试结果记录定义

typedefHeadNodeResultType[MAXNUM];

typedefintstatus;

3、主要算法设计:

/*---------------------与单词相关的函数---------------------*/

/*------------------------------------------------------------------*/

/*定义新单词函数*/

/*功能:

把新单词放入堆中*/

/*参数:

WordType*nw--单词描述信息指针*/

/*Sequencecha--单词信息*/

/*返回值:

操作成功与否的状态信息*/

/*0--操作失败,空间不足;

1--操作成功*/

/*--------------------------------------------------------------*/

statusNewWord(WordType*nw,Sequencecha)

{

inti,k;

if(sp.freep+cha.size>

=MAXSIZE)

{

printf("

HeapFull!

\n"

);

getchar();

return0;

}

else

{

i=sp.freep;

sp.freep=sp.freep+cha.size;

for(k=0;

k<

cha.size;

k++)sp.stores[i+k]=cha.ch[k];

nw->

stadr=i;

len=cha.size;

return1;

}

/*------------------------------回到最初空间-------------------*/

v

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 文化宗教

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1