《2022年数据结构字符串的基本操作定义》由会员分享,可在线阅读,更多相关《2022年数据结构字符串的基本操作定义(9页珍藏版)》请在金锄头文库上搜索。
1、附录实验报告参考规范数据结构实验报告院系_ 专业_ 姓名 _林桢曦 _ 学号 _106052010235_ 电话 _ _级_班_年_月_日1实验题目字符串的基本操作2需求分析(1)字符串匹配。采用顺序结构存储串,编写一个函数SubStr(str1,str2),用于判定 str2是否是 str1的子串。(2)公共字符串。问题描述编写一个函数,实现在两个已知字符串中找出所有非空最长公共子串的长度和最长公共子串的个数。实现要求输出非空最长公共子串的长度和最长公共子串的个数。字符串匹配:串长度Strlen(SString str) 判断是否为子串SubStr(SString str1,SString
2、str2) 公共字符串:串长度Strlen(SString str) 最大公共串长度函数maxlen() 求公共串个数函数SubStrnum() 输入形式:字符串。3概要设计(1) ADT SString 数据对象: D=ai|aiIntegerSet,i=0,1,2,n,n 0 结构关系: R=|ai,ai+1 D 基本操作:Strlen(SString str) 操作前提:字符串str已存在操作结果:求 str的长度SubStr(SString str1,SString str2) 操作前提:字符串str 已存在操作结果:判断str2 是不是 str1 的子串 ADT SString 数据
3、对象: D=ai|aiIntegerSet,i=0,1,2,n,n 0 结构关系: R=|ai,ai+1 D 基本操作:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 9 页 - - - - - - - - - 福建师范大学物光院计算机教学辅导讲义2 Strlen(SString str) 操作前提:字符串str已存在操作结果:求 str的长度maxlen(SString str1,SString str2,SString str) 操作前提:字符串str1,str2,s
4、tr 已存在操作结果:求str1 和 str2 的最大公共子串长度,并将该子串赋给str SubStrnum(SString str1,SString str2) 操作前提:字符串str1, str2 已存在操作结果:求在str1 中 str2 子串的个数 (2)字符串匹配:本程序包含3个函数:主函数 main() 求串长函数Strlen(SString str) 字符串匹配函数SubStr(SString str1,SString str2) 各函数调用关系:主函数main 调用其他两个函数公共字符串:本程序包含4个函数:主函数 main() 求串长函数Strlen(SString str)
5、 最大公共串长度函数maxlen() 求公共串个数函数SubStrnum() 各函数调用关系:主函数main 调用其他三个函数(3)字符串匹配:主函数的伪码main() 定义 SString 变量 str1,str2; 输入第一个字符串;输入第二个字符串;调用字符串匹配函数;输出匹配结果;公共字符串:主函数的伪码main()定义 SString 变量 str1,str2,str3; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 9 页 - - - - - - - - -
6、 福建师范大学物光院计算机教学辅导讲义3 输入第一个字符串;输入第二个字符串;调用最大公共串长度函数,输出结果;调用公共串个数函数,输出结果;4详细设计字符串匹配:(1)类型定义typedef unsigned char SStringMAXSTRLEN+1;基本操作的伪码算法(1)求串长int Strlen(SString str) 定义整型变量i;当 stri 不为空时i+ ; (2)字符串匹配int SubStr(SString str1,SString str2) 定义 int 变量 i,m,j,p;n=Strlen(str1); m=Strlen(str2); 如果 nm 则返回 0
7、;当 i=n-1&j=0;max- ) For 循环 (i=0; str1i; i+) For 循环 (j=0; str2j; j+) For 循环 (h=0; str1i+h=str2j+h & (str2j+h | str1i+h); h+); 如果 (h=max) index = j; For 循环 (i=0; imax; i+) stri = str2index+; strmax=0; 返回 max; (3)求公共串个数int SubStrnum(SString str1,SString str2) 定义变量int i=0,j=0,n,m,k=0; n=Strlen(str1); m=
8、Strlen(str2); 当 str1i 不为空时当 str2j 不为空时名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 9 页 - - - - - - - - - 福建师范大学物光院计算机教学辅导讲义5 如果 str1i=str2j 则 i+; j+; 否则 i=i-j+1;j=0; 如果 str1i 为空则退出循环; 如果 str2j 为空 k+;j=0; 返回 k;5调试分析调试时出现错误,经过检查发现在某些地方出现死循环问题。6使用说明( 1)字符串匹配:程序名
9、为test6-1.exe,程序执行过程如下:提示用户输入第一个字符串;用户按要求输入一个字符串;提示用户输入第二个字符串;用户按要求输入二个字符串;调用字符串匹配函数,并在屏幕上显示匹配结果。( 2)公共字符串:程序名为test6-2.exe,程序执行过程如下:提示用户输入第一个字符串;用户按要求输入一个字符串;提示用户输入第二个字符串;用户按要求输入二个字符串;调用 maxlen 函数,并在屏幕上显示最大公共子串长度。再调用 SubStrnum 函数分别进行比较,并将结果输出。7测试结果字符串匹配:(1)屏幕显示:请输入第一个字符串:输入 abcdefghi 后,屏幕显示:请输入第二个字符串
10、:输入 def 后,名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 9 页 - - - - - - - - - 福建师范大学物光院计算机教学辅导讲义6 屏幕显示: str2 是 str1 的子串。(2)屏幕显示:请输入第一个字符串:输入 abcdefgi 后,屏幕显示:请输入第二个字符串:输入 dif 后,屏幕显示: str2 不是 str1 的子串。(1)( 2)公共字符串:屏幕显示:请输入第一个字符串:输入 abcdefghijklmn 后,屏幕显示:请输入第二个字符
11、串:输入 abikabnmabw 后,屏幕显示:最大公共子串长度为2 公共子串个数为3 8. 参考文献数据结构( c 语言版)9附录源程序文件如下:字符串匹配:#include #define MAXSTRLEN 255 typedef unsigned char SStringMAXSTRLEN+1; int Strlen(SString str)Strlen(SString str) int i=0; while(stri!=0) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第
12、6 页,共 9 页 - - - - - - - - - 福建师范大学物光院计算机教学辅导讲义7 i+; return i; int SubStr(SString str1,SString str2) int i=0,j=0,n,m; n=Strlen(str1); m=Strlen(str2); if(nm) return 0; while(i=n-1&j=m-1) if(str1i=str2j) i+; j+; elsei=i-j+1;j=0; if(j=m) return 1; else return 0; void main() SString str1,str2; printf( 请输
13、入第一个字符串:); scanf(%s,str1); printf(n); printf( 请输入第二个字符串:); scanf(%s,str2); printf(n); if(SubStr(str1,str2) printf(str2 是str1的子串 n); else printf(str2 不是 str1的子串 n); 公共字符串:#include #define MAXSTRLEN 255 typedef unsigned char SStringMAXSTRLEN+1; int Strlen(SString str) int i=0; 名师资料总结 - - -精品资料欢迎下载 - -
14、 - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 9 页 - - - - - - - - - 福建师范大学物光院计算机教学辅导讲义8 while(stri!=0) i+; return i; int maxlen(SString str1,SString str2,SString str) int i, j, h, index, max=0; for(max=Strlen(str2);max=0;max-) for(i=0; str1i; i+) for(j=0; str2j; j+) for(h=0; str1i+h=
15、str2j+h & (str2j+h | str1i+h); h+); if(h=max) index = j; for(i=0; iSubStrnum(str2,str3)?SubStrnum(str1,str3):SubStrnum(str2,str3) ); 注意事项:每位同学必须完成实验任务,并提交实验报告。杜绝抄袭和拷贝,一经发现该次实验雷同报告均以零分计。请将实验报告以电子文档提交,“网络工程”专业请发送到信箱中,“电子信息”专业请发送到 信箱中,请附上程序清单.C 源程序文件、和实验报告WORD 文档两部分,以打包压缩文件形式提交,每次实验为一个文件夹的打包压缩文件,文件夹名统一为*?.rar 或*?.zip,其中 * 为你的学号(全部号码) ,为你中文姓名,?分别为 01,02,0311 表示第几次实验。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 9 页 - - - - - - - - -