根据关键字进行字符串拷贝概览.doc

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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

文档评论(0)

4477769 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档