ImageVerifierCode 换一换
格式:DOCX , 页数:22 ,大小:19.68KB ,
资源ID:5396807      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5396807.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(文学助手研究 数据结构 测试五.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

文学助手研究 数据结构 测试五.docx

1、文学助手研究 数据结构 测试五#include #include #include #include #include #define MAXSIZE 1000#define MAXLEN 20#define MAXNUM 16#define FALSE 0#define TRUE 1/*-堆结构的定义-*/typedef struct char storesMAXSIZE; int freep; /当前可用空间开始位置 HeapSpace;HeapSpace sp;/*-单词数据类型定义-*/*-单词在堆中的位置描述-*/typedef struct int stadr; /单词在对空间中的

2、开始位置 int len; /单词长度 WordType;/*-单词描述-*/typedef struct char chMAXLEN; /单词字符串 int size; /单词长度 Sequence;/*-有序表类型定义-*/*-单词有序表结点定义-*/typedef WordType ElemType;typedef struct NodeType ElemType data; struct NodeType *next; NodeType,*LinkType;/*-单词有序表定义-*/typedef struct LinkType head; /有序表头指针 LinkType tail;

3、 /有序表尾指针 int size; /有序表结点个数 OrderList;/*-记录一行中匹配成功单词在目标词汇表中的位置-*/typedef struct int eqelemMAXNUM; /单词在目标词汇表中的位置 int last; /匹配成功单词的个数 EqelemList;/*-文件测试相关的数据类型定义-*/*-单词在文件中的位置-*/typedef struct Node int elem; /被测单词在文件中的行号 struct Node *next;/指向下一个行号结点的指针 Node,*Link;/*-单词统计分析记录结构定义-*/typedef struct Word

4、Type data; /被测试的单词 int count; /在文件中出现的次数 Link next; /记录出现的所有行号的脸表头指针 HeadNode;/*-文本文件测试结果记录定义-*/typedef HeadNode ResultTypeMAXNUM;typedef int status;/*-与单词相关的函数-*/*-*/* 定义新单词函数 */* 功能:把新单词放入堆中 */* 参数:WordType *nw-单词描述信息指针 */* Sequence cha-单词信息 */* 返回值:操作成功与否的状态信息 */* 0-操作失败,空间不足;1-操作成功 */*-*/status

5、NewWord(WordType *nw,Sequence cha) int i,k; if(sp.freep+cha.size=MAXSIZE) printf(Heap Full!n); getchar(); return(0); else i=sp.freep; sp.freep=sp.freep+cha.size; for(k=0;kstadr=i; nw-len=cha.size; return(1); /*-*/* 复制单词信息函数 */* 功能:把一个单词信息复制到另一个变量中 */* 参数:WordType *nw-新单词描述信息指针 */ /* WordType oldw-旧单

6、词描述信息指针 */* 返回值:无 */*-*/void CopyWord(WordType *nw,WordType oldw) nw-stadr=oldw.stadr; nw-len=oldw.len; /*-*/* 单词比较函数 */* 功能:比较堆中两单词的大小 */* 参数:WordType wd1-第一个单词描述信息 */* WordType wd2-第二个单词描述信息 */* 返回值:-1-小于;0-等于;1-大于 */*-*/int WordCmp(WordType wd1,WordType wd2) int si,sj; for(si=wd1.stadr,sj=wd2.sta

7、dr;si(wd1.stadr+wd1.len)&sjsp.storessj)return (1);else if(sp.storessiwd2.len)/*两个单词长度不相等*/return (1); else if(wd1.lenwd2.len)return (-1); elsereturn (0); /*-*/* 打印单词函数 */* 功能:打印堆中一个单词 */* 参数:WordType wd-单词描述信息 */* 返回值:无 */*-*/void PrintWord(WordType wd) int i; for(i=0;idata.stadr=e.stadr; (*p)-data.

8、len=e.len; (*p)-next=NULL; return(TRUE); /*-*/* 有序表初始化函数 */* 功能:申请头结点,初始化有序表 */* 参数:OrderList *L-有序表指针 */* 返回值:TRUE-初始化成功;FALSE-初始化失败*/*-*/status InitList(OrderList *L) ElemType wd; wd.stadr=-1; wd.len=0; if(MakeNode(&(L-head),wd) L-tail=L-head; L-head-next=NULL; L-size=0; return(TRUE); else L-head=

9、NULL;return(FALSE); /*-*/* 撤销有序表函数 */* 功能:释放有序表所有结点,撤销有序表 */* 参数:OrderList *L-有序表指针 */* 返回值:无 */*-*/void DestroyList(OrderList *L) LinkType p,q; if(L-size=0) return; p=L-head; while(p) q=p;p=p-next; free(q); L-head=L-tail=NULL; /*-*/* 有序表查找函数 */* 功能:确定给定单词e在有序表中的位置 */* 参数:OrderList L-有序表 */* ElemTyp

10、e e-给定要查找的数据e */* LinkType *q-有序表结点指针 */* 查找成功,q指向具有e值的结点 */* 查找失败,q指向小于e的结点 */* 返回值:int型,1-查找成功;0-查找失败 */*-*/status LocateElem(OrderList L,ElemType e,LinkType *q) LinkType pre,p; int t; pre=L.head; p=L.head-next; while(p) t=WordCmp(p-data,e); if(t=0)*q=p;return (1);else if(t=-1)pre=p;p=p-next;else*

11、q=pre;return (0); *q=pre; return (0); /*-*/* 有序表插入函数 */* 功能:在指定结点q后插入一个结点s */* 参数:OrderList *L-有序表指针 */* LinkType q-指定结点指针 */* LinkType s-待查入结点指针 */* 返回值:无 */*-*/void InsertAfter(OrderList *L,LinkType q,LinkType s) if(L-head&q&s) s-next=q-next;q-next=s; if(L-tail=q) L-tail=s; L-size+; /*-*/* 表匹配函数 *

12、/* 功能:把Lb表中匹配La表成功的元素放入s表 */* 参数:OrderList La-存放统计单词的有序表 */* OrderList Lb-存放待匹配单词的有序表 */* EqelemList *s-存放匹配成功单词信息表指针*/* 返回值:无 */*-*/void ListCompare(OrderList La,OrderList Lb,EqelemList *s) int pos; LinkType pa,pb; if(La.head&Lb.head) pb=Lb.head-next; s-last=0;pos=0; for(pa=La.head-next;pa!=NULL;pa

13、=pa-next)while(pb)if(WordCmp(pa-data,pb-data)=0) s-eqelems-last+=pos;else if(WordCmp(pa-data,pb-data)=-1)break;pb=pb-next;/whilepos+;pb=Lb.head-next;/for /if/*-*/* 判表空函数 */* 功能:判断表L是否是空表 */* 参数:OrderList L-有序表 */* 返回值:0-非空表;1-空表 */*-*/status ListEmpty(OrderList L) if(L.size=0) return(TRUE); return(F

14、ALSE); /*-与文本文件有关的函数-*/*-*/* 字符判断函数 */* 功能:判断文件中下一个字符是否为回车符 */* 参数:FILE *f-文件指针 */* 返回值:0-不是回车符;1-是回车符 */*-*/int feoln(FILE *f) char cha; cha=fgetc(f); ungetc(cha,f); if(cha=n) return(TRUE); return(FALSE); /*-*/* 读取单词函数 */* 功能:从文件中读取一个单词 */* 参数:FILE *f-文件指针 */* Sequence *st-指向单词的指针 */* 返回值:无 */*-*/

15、void GetAWord(FILE *f,Sequence *st) char ch; st-size=0; printf(get a wordn); doch=fgetc(f);while(ch= );/do.while if(ch=n) st-size=0; return; /if while(ch!= ) st-chst-size=ch; st-size+; ch=fgetc(f); if(ch=n|ch=-1) ungetc(ch,f);return; /*-*/* 读取文件当前行单词函数 */* 功能:提取文件指针所在行所有单词 */* 参数:FILE *f-文件指针 */* Or

16、derList *ta-存放单词有序表的指针 */* 返回值:0-操作失败;1-操作成功 */*-*/status ExtractWord(FILE *f,OrderList *ta) Sequence str; WordType nwd; LinkType p; LinkType s; printf(Extract wordn); if(InitList(ta)=0) printf(InitList ta have errors!n); return (0); /if while(!feof(f)&!feoln(f)/*文件结束或行结束*/ GetAWord(f,&str); if(str.

17、size=0)return (1); if(NewWord(&nwd,str)=0)printf(NewWord errors!n);return (0); if(MakeNode(&p,nwd)=0) printf(MakeNode errors!n);return (0); LocateElem(*ta,nwd,&s); InsertAfter(ta,s,p); /while fgetc(f); return (1);/*-*/* 文件单词匹配函数 */* 功能:统计指定单词在文件中出现的次数和位置 */* 参数:FILE *f-文件指针 */* OrderList pat-指定统计的单词

18、有序表 */* ResultType rs-统计结果列表 */* 返回值:0-统计失败;1-统计成功 */*-*/status match(FILE *f,OrderList pat,ResultType rs) int i,k,linenum,failed,fsp; OrderList sa; EqelemList eqlist; Link q; linenum=1; while(!feof(f) if(InitList(&sa)=0) printf(InitList(sa) errors!n); return (0); /if eqlist.last=0; if(!ExtractWord(

19、f,&sa) printf(ExtractWord errors!n); return 0; /if ListCompare(pat,sa,&eqlist); DestroyList(&sa); if(eqlist.last!=0) for(i=0;ieqlist.last;i+) failed=1; fsp=eqlist.eqelemi; rsfsp.count+;for(k=0;kelem=linenum;q-next=rsfsp.next; rsfsp.next=q;/if语句 /for语句 /if语句 linenum+; /while语句 return (1);/*-*/* 初始化文件

20、函数 */* 功能:输入指定的文件名并打开文件 */* 参数:FILE *f-返回的文件指针 */* 返回值:0-初始化失败;1-初始化成功 */*-*/status Initialization(FILE *fr) char FileName30; printf(Input file name:); do scanf(%s,FileName); while(strlen(FileName)=0); *fr=fopen(FileName,r); if(*fr) printf(file open!n); return(TRUE); else printf(file not open!n);return(FALSE); /*-*/* 输入统计的词集函数 */* 功能:输入待统计的词集并建立起数据结构 */* 参数:OrderList *pt-返回的词集有序表指针 */* 返回值:无 */*-*/void InputWord(OrderList *pt) char cc; int t=0; Sequence ws; LinkType p,q; WordType nwd; if(!InitList(pt)

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

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