C++数据结构课程设计——文学研究助手
设计任务与目标
【问题描述】
文学研究人员需要统计某篇英文小说中某些形容词的出现次数和位置。试写一个 实现这一目标的文字统计系统,称为“文学研究助手”。
【基本要求】
英文小说存放于一个文本文件中。待统计的词汇集合要依次输入完毕,即统计工作必须在程序的一次运行之后就全部完成。
程序的输出结果是每个词的出现次数和出现位置所在行的行号,格式自行设计。
【选作内容】
(1)模式匹配要基于KMP算法
(2)整个统计过程中只对小说文字扫描一遍以提高效率
数据结构和算法说明
部分源码
// 串的堆分配存储表示
typedef struct HString
{ char *ch; int length;
}HString; typedef struct ShowDataElem
{ int row;int count; int location;
}ShowDataElem;
//行数据链表
typedef struct LRowNode
{ ShowDataElem data; struct LRowNode *next;
}LRowNode,*RowLink;
typedef struct
{ RowLink head; RowLink tail; int len;
}RowLinkList;
//串数据链表
typedef struct StringNode
{ HString str; RowLinkList rowlist; StringNode *next;
}StringNode,*StringLink;
typedef struct
{ StringLink head,tail; int len;
}StringLinkList;
//以上为定义的所需要的结构体
void copy(HString &T, char *chars)
{int len; int i; len=strlen(chars);if(!len) { T.ch=NULL; T.length=0; } else { T.ch = (char *) malloc(len*sizeof(char) ); if( !T.ch ) exit(0); for(i=0;i<len;i++) T.ch[i] = chars[i]; T.ch[i]='\0';T.length = len; }
}
//返回子串t在主串s中第pos个字符之后的位置。
int Index(HString s,HString t, int pos)
{ int i=pos; int j=1; int c; while(i<=s.length && j<=t.length) { if(s.ch[i-1]==t.ch[j-1]) i++,j++; else { i=i-j+2; j=1; } } if(j>t.length) { c=i-t.length; return c; } else return 0;
}
int Next(HString s,int j)
{ //KMP模式匹配的next函数if(j==1) return 0; int k,i; for(k=j-1;k>1;k--) { for(i=1;i<k;i++) { if(s.ch[i-1] != s.ch[j-k+i-1]) break; } if(i==k) break; } return k;
}
int IsNotCharactor(char ch)
{ //判断该字符是不是字母int a; a=ch>='a'&&ch<='z' || ch>='A'&&ch<='Z'; return (!a);
}
int Index_KMP(HString s,HString t, int pos)
{ //KMP算法int i=pos,j=1; int c; while(i<=s.length && j<=t.length) { if(j==0 || s.ch[i-1]==t.ch[j-1]) { i++; j++; } else j=Next(t,j); } if(j>t.length&&(IsNotCharactor(s.ch[i-1]) && IsNotCharactor(s.ch[i-t.length-2]))) { c=i-t.length; return c; } else return 0;
}
int Count_KMP(HString s,HString t,int pos)
程序运行、测试与分析
有需要查看完整源代码和程序设计报告的同学可以点击下面链接下载
文学研究助手完整代码
其中包含整个大作业内容
C++数据结构课程设计——文学研究助手相关推荐
- c语言文学研究助手报告,文学研究助手数据结构报告.doc
文学研究助手数据结构报告 学号 武汉理工大学华夏学院 课 程 设 计 课程名称 数据结构 题 目 文学研究助手 专 业 班 级 姓 名 __ _ _____ 成 绩 _________________ ...
- c语言文学研究助手报告,数据结构文学研究助手.doc
数据结构文学研究助手 目 录 一.[实验目的]3 二.[问题描述]3 三.[基本要求]3 四.[实验环境]3 五.[测试数据及其结果]3 六.[实验源代码]5 一.[实验目的] 本次实习的主要目的是熟 ...
- 文学研究助手(设计性实验)
文学研究助手(设计性实验) 1. 需求分析 需求: 英文小说存于一个文本文件中.待统计的词汇集合要一次输入完毕,即统计工作必须在程序的一次运行之后就全部完成.程序的输出结果是每个词的出现次数和出现位置 ...
- 用java实现文学研究助手_数据结构文学研究助手 C语言代码实现(带源码+解析)...
文学研究人员需要统计某篇英文小说中某些形容词的出现次数和位置.一个实现这一目标的文字统计系统,称为"文学研究助手". 假设英文小说存放在一个文本文件中,每个单词不包含空格且不跨行, ...
- 学生搭配问题数据结构报告c语言,数据结构课程设计_学生搭配问题.doc
数据结构课程设计_学生搭配问题 数据结构课程设计 题 目: 学生搭配问题 学 院: 班 级: 学 生 姓 名: 学 生 学 号: 指 导 教 师: 2012 年 12 月 3 日 课程设计任务书 姓名 ...
- C/C++《数据结构课程设计》任务书[2022-12-27]
C/C++<数据结构课程设计>任务书[2022-12-27] <数据结构课程设计>任务书 一.任务总体安排: 班级 设计时间 地点 指导老师 21软件开发 17周每周一至周五五 ...
- c语言实现一元多项式程序报告设计,数据结构课程设计报告一元多项式的计算..doc...
数据结构课程设计报告一元多项式的计算. 题目:一元多项式的计算 --链表 摘要(题目) 一元多项式计算 任务:能够按照指数降序排列建立并输出多项式: 能够完成两个多项式的相加.相减,并将结果输入: 目 ...
- 公交换乘系统c语言,数据结构课程设计报告(公交换乘).docx
课 程 设 计 报 告 题目: 武昌地区公交查询与换乘推荐 课程名称: 数据结构课程设计 专业班级: 学 号: 姓 名: 指导教师: 报告日期: 计算机科学与技术学院 任 务 书 设计内容 掌握图.查 ...
- C/C++数据结构课程设计安排
C/C++数据结构课程设计安排 数据结构课程设计安排 课程设计学时:32学时 课程设计目的:综合应用数据结构课程中所学的数据结构:线性表.栈.队列.数组.广义表.树.二叉树.图.查找表中的一种或多种数 ...
最新文章
- python编写es脚本_es数据迁移脚本(python)
- Mocha and Diana (Easy Version) 并查集维护两片森林
- 修改html页面的title,可以自定义
- 【BZOJ28431180】极地旅行社,LCT练习
- Python字典操作
- 基于跨模态预测的多模态情感分类
- Halcon之 Variation Model(转)
- html css调用自定义字体,html css使用特殊自定义字体避免侵权
- react中使用less
- 名言警句(英语和汉语)
- 如何快速把芝麻信用分提高到750以上?
- Bias-Variance Tradeoff(权衡偏差与方差)
- java中pl是什么意思,英语中pl是什么意思
- 初学风水-某商务中心店铺
- 如何系统地学习计算机科学与技术?六步帮你轻松自学
- UPS知识全集,值得收藏!
- 在Linux系统下实现进程,在Linux2.6内核下实现进程隐藏
- Comware: Port Link-mode Bridge vs Port Link-mode Route
- 是不是虚拟内存越大越好
- 开发笔记:游戏中的好友系统