- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构上机实验报告
题目:根据关键字进行字符串拷贝
学生姓名
学生学号
学院名称 计算机学院
专 业 计算机科学与技术
时 间 2014.11.9
目 录
第一章 需求分析 1
1.1 原题表述 1
1.2 问题解决方案 1
第二章 概要设计 2
2.1 抽象数据类型 2
2.2 主要算法分析 2
第三章 详细设计 3
3.1 程序代码 3
第四章 调试分析 6
4.1 出现的问题及解决方法 6
第五章 测试分析 7
5.1 测试样例 7
需求分析
1.1 原题表述
给出一个字符串A和一个字符串B,请你计算字符串B的所有旋转形式在字符串A中的出现总次数。
说明:如果将字符串B描述成B1B2...Bm的形式(m是B的长度),那么B1B2...Bm-1Bm,B2B3...BmB1,...,BmB1...Bm-2Bm-1就是字符串B的所有旋转形式。
输入格式:输入包含多组测试数据。每组输入为两行,第一行输入字符串A,第二行输入字符串B。A的长度不超过1000,B的长度不超过100,所有字符串仅包含小写字母。
输出:对于每组输入,输出字符串B的所有旋转形式在字符串A中的出现总次数。
1.2 问题解决方案
依次输入字符串A和B。
建立一个函数Count(A,B)用于计算B在A中的次数。
建立一个函数XuanZhuan(B)产生字符串B的旋转形式。
用一个二维数组存储字符串B的旋转形式(相同的旋转形式只存一次)。
计算B的旋转形式在A中出现的总次数。
输出总次数。
第二章 概要设计
2.1 抽象数据类型
ADT String {
数据对象:D = { ai | ai CharacterSet,i = 1,2,3,…,n, n = 0}
数据关系:S = { ai - 1 ,ai | ai -1 ,ai D, i = 2,3,4,…,n}
基本操作:
CreatString(S)
操作结果:建立一个字符串
Count(A,B)
初始条件:已建立字符串A,B
操作结果:输出B在A中出现的次数
XuanZhuan(S)
初始条件:已建立字符串S
操作结果:将S的头移至尾
SunCount(A,B)
初始条件:已建立字符串A,B
操作结果:输出B的所有旋转形式在A中出现的次数
}
2.2 主要算法分析
算法CreatString(S) 的时间复杂度为O(n2);
算法Count(A,B) 的时间复杂度为 O(n2);
算法XuanZhuan(S)的时间复杂度为O(n2);
算法 IsSame(T,S,n)的时间复杂度为O(n2);
算法 SumCount(A,B)的时间复杂度为O(n2);
第三章 详细设计
3.1 程序代码
#includestdio.h
#define MAXSIZE 1111
typedef struct {
char data[MAXSIZE];
int length;
}SqString;
typedef char SString[MAXSIZE][MAXSIZE];
//建立一个字符串
void CreatString(SqString S){
int i = 0;
char ch;
while((ch = getchar()) != \n){
S.data[i] = ch;
i++;
}
S.length = i;
}
//求字符串B在A中出现的次数
int Count(SqString A, SqString B){
int lenA = A.length;
int lenB = B.length;
int count = 0;
int k = 0, i = 0, j = 0;
while(k lenA){
i = k;
while(i lenA j lenB){
if(A.data[i] == B.data[j]){
++i;
++j;
}else{
i = i - j + 1;
j = 0;
}
}
if(j = lenB) count++;
k = i - j + 1;
j = 0;
}
return count;
}
//字符串S的旋转形式,将S的头移至尾
void
您可能关注的文档
- 手弧焊立对接焊概览.doc
- 机械原理洗瓶机123456概览.doc
- 首次开机与关机概览.doc
- 机械原理项目教学结题概览.doc
- 机械原理选择概览.doc
- 首席质量官理论与实务公式大全概览.doc
- 受弯构件实验概览.doc
- 机械制造基础{1-6}概览.doc
- 机械制造技术基础设计指导书-最终1概览.doc
- 机械专业英语高频词汇概览.doc
- 高考政治一轮复习必修2经济与社会专题二第六课我国的社会主义市场经济体制突破主观题型关于“社会主义市场经济”的措施类课件.pptx
- 高考政治一轮复习选择性必修3逻辑与思维专题十二逻辑与思维第三十六课运用辩证思维方法突破主观题型关于“辩证思维”的分析类课件.pptx
- Unit 3 Sports and fitness language points of reading and thinking 英语教学课件.pptx
- Vicor-高带宽电源模块消除高压线路纹波抑制的干扰.docx
- 六合理化建议.docx
- 4种高性能隔离电源方案.docx
- ADI电机运动控制解决方案驱动智能运动新时代.docx
- 用于1500V光伏逆变器的功率模块解决方案.docx
- 2017年深圳英语中考---阅读理解.pdf
- 2021年学校双减工作实施方案.pdf
文档评论(0)