串的定义及其基本运算课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《串的定义及其基本运算课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 定义 及其 基本 运算 课件
- 资源描述:
-
1、4.1 串的定义及其基本运算4.2 串的定长顺序存储及基本运算4.3 串的堆存储结构第四章 串作业6:P235(1,2)4.1.1串的定义v定义:串(string)是由零个或多个任意字符组成的字符序列,又称为字符串(character string),一般记为:4.1 串的定义及其基本运算s=a1 a2 a3an说明:1)其中s是串名,用双引号括起来的字符序列是串的值。2)ai(1=i1.子串:字符串中任意个连续的字符构成的序列;母串:包含该子串的字符串;两串相等:两个字符串的长度相等且各对应位置上的字符都相同.字符的位置:从1开始子串的位置:该子串第一个字符的位置4.1.2 串的基本运算1.
2、求串的长度StrLength(s);2.串赋值StrAssign(s1,s2);3.两个串的连接StrConcat(s1,s2,s)或StrConcat(s1,s2)4.求某串的子串SubStr(s,i,len);5.串比较StrCmp(s1,s2);6.子串定位StrIndex(s,t);7.插入子串StrInsert(s,i,t);8.删除子串StrDelete(s,i,len);9.置换StrRep(s,t,r)。4.2.1存储结构的实现#define MAXSIZE 256typedef struct char dataMAXSIZE;int curlen;SeqString;4.2串
3、的定长顺序存储及基本运算第一种:第二种:#define MAXSIZE 256char sMAXSIZE;abefi0256s.curlencdgh13478s.dataMAXSIZE-1abefi0256cdgh1347809MAXSIZE-1第三种:#define MAXSIZE 256char sMAXSIZE+1;abefi0256cdgh1347899MAXSIZE4.2.2运算实现(采用第二种表示串长的方式)1.求串的长度StrLength(s);int StrLength(char s)int len=0;while(slen!=0)len+;return len;2.串赋值St
4、rAssign(s1,s2);void StrAssign(s1,s2)char s1,s2 ;int j=0;while(s2j!=0)s1j=s2j;j+;s1j=0;3.两个串的连接StrConcat1(s1,s2,s)4.求某串的子串SubStr(s,i,len);5.串比较StrCmp(s1,s2);4.2.3模式匹配设s和t是给定的两个串,在主串s中查找子串t的过程称为。其中t也称为模式。为运算方便,字符串采用定长存储,且用第三种方式表示串长:#define MAXSIZE 256char sMAXSIZE+1;abefi0256cdgh1347899MAXSIZE1.简单的模式匹
5、配算法(BF算法)(1)算法思想:例:主串S:“acabaabaabcacaabc”模式串t:“abaabcac”s:a c a b a a b a a b c a c a a b c t:a b a a b c a c i=1j=1 s:a c a b a a b a a b c a c a a b c t:a b a a b c a ci=2j=2if(si=tj)i+;j+;if(si!=tj)i回溯到本趟开始的下一个;j回溯到1;s:a c a b a a b a a b c a c a a b c t:a b a a b c a ci=2j=1 s:a c a b a a b a a
6、 b c a c a a b c t:a b a a b c a ci=3j=1i=4j=2i=5j=3i=6j=4i=7j=5i=8j=6 s:a c a b a a b a a b c a c a a b c t:a b a a b c a ci=4j=1 s:a c a b a a b a a b c a c a a b c t:a b a a b c a ci=5j=1i=6j=2 s:a c a b a a b a a b c a c a a b c t:a b a a b c a ci=6j=1i=7j=2i=8j=3i=9j=4i=10j=5i=11j=6i=12j=7i=13j
7、=8i=14j=9(2)算法实现循环条件?什么时候回溯?回溯时i、j如何计算?如何判断匹配是否成功?匹配成功时,返回的起始位置如何计算?见P59的算法4-42.改进后的模式匹配算法(KMP算法)s:a c a b a a b a a b c a c a a b c t:a b a a b c a ci=8j=6 s:a c a b a a b a a b c a c a a b c t:a b a a b c a ci=8k=3(1)KMP算法思想:i不回溯,j也不是回溯到1,而是回溯到k,也就是模式t向右滑动到某个位置k。(2)k位置的确定next函数用next函数来确定k的值,即k=nex
展开阅读全文