41串类型的定义42串的表示和实现43串的模式匹配算法课件.pptx
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《41串类型的定义42串的表示和实现43串的模式匹配算法课件.pptx》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 41 类型 定义 42 表示 实现 43 模式 匹配 算法 课件
- 资源描述:
-
1、重点:(1)ADT串的设计、实现方法和基本操作;(2)串的简单模式匹配算法,KMP算法。难点:串的模式匹配算法中的KMP算法。本章重点难点 4.1 串类型的定义 4.2 串的表示和实现 4.3 串的模式匹配算法4.1 串类型的定义 串是由零个或多个字符组成的有限序列。记为:s=”a1a2an”(n0)其中,s是串的名,用双引号括起来的字符序列是串的值。(1)串的长度:串中字符的数目n。(2)空串(Null string):长度为零的串。(3)子串:串中任意个连续的字符组成的子序列。p 串的有关术语p 串(String)的定义4.1 串类型的定义 (4)主串 包含子串的串相应地称为主串。(5)串
2、相等 只有当两个串的长度相等,并且各个对应位置的字符都相等,称两串相等。(6)空格串(空白串)(blank string)由一个或多个空格组成的串。要和“空串”区别,空格串有长度就是空格的个数。p 串的有关术语4.1 串类型的定义 (1)串数据对象约束为字符集。(2)基本操作的对象不同,线性表以“单个元素”为操作对象;串以“串的整体”为操作对象,操作的一般都是子串。p 串与一般线性表的区别ADT String 数据对象数据对象:数据关系数据关系:基本操作:基本操作:ADT String p 串的ADT定义见下页D ai|aiCharacterSet,i=1,2,.,n,n0 R1|ai-1,a
3、i D,i=2,.,n 4.1 串类型的定义p 基本操作:StrAssign(&T,chars)/根据串常量根据串常量chars生成串生成串T StrCopy(&T,S)/把串把串S中内容拷贝到中内容拷贝到T串串 DestroyString(&S)/销毁串销毁串S StrEmpty(S)/判断串是否空判断串是否空 StrCompare(S,T)/比较串比较串S和和T StrLength(S)/求串长求串长 Concat(&T,S1,S2)/连接串连接串4.1 串类型的定义p 基本操作:SubString(&Sub,S,pos,len)/求子串求子串 Index(S,T,pos)/子串定位子串定
4、位 ClearString(&S)/清空串清空串S StrDelete(&S,pos,len)/删除子串删除子串 Replace(&S,T,V)/把串把串S中符合中符合T的子串替换的子串替换 StrInsert(&S,pos,T)/插入子串插入子串4.1 串类型的定义4.2 串的表示和实现4.2.1、定长顺序存储表示4.2.2、堆分配存储表示4.2.3、串的块链存储表示4.2.1 定长顺序存储表示定长顺序存储表示#define MAXSTRLEN 255 /用户可在用户可在255以内定义最大串长以内定义最大串长 typedef unsigned char SstringMAXSTRLEN+1;
5、/0号单元存放串的长度号单元存放串的长度Sstring S;p 串的顺序存储C语言实现 Status Concat(SString S1,SString S2,SString&T)/用用T返回由返回由S1和和S2联接而成的新串。若未截断联接而成的新串。若未截断,则返回则返回TRUE,否则,否则FALSE。.return uncut;/Concat T1.S10=S11.S10;TS10+1S10+S20=S21S20;T0=S10+S20;uncut=TRUE;if(S10+S20=MAXSTRLEN)/未截断未截断4.2.1 定长顺序存储表示定长顺序存储表示p 串的连接算法 Status C
6、oncat(SString S1,SString S2,SString&T)/用用T返回由返回由S1和和S2联接而成的新串。若未截断联接而成的新串。若未截断,则返回则返回TRUE,否则,否则FALSE。.return uncut;/Concat else if(S10 MAXSTRSIZE)/截断截断T1.S10=S11.S10;TS10+1MAXSTRLEN=S21MAXSTRLENS10;T0=MAXSTRLEN;uncut=FALSE;4.2.1 定长顺序存储表示定长顺序存储表示p 串的连接算法 Status Concat(SString S1,SString S2,SString&T)
7、/用用T返回由返回由S1和和S2联接而成的新串。若未截断联接而成的新串。若未截断,则返回则返回TRUE,否则,否则FALSE。.return uncut;/Concat else /截断截断(仅取仅取S1)T0.MAXSTRLEN=S10.MAXSTRLEN;/T0=S10=MAXSTRLEN uncut=FALSE;4.2.1 定长顺序存储表示定长顺序存储表示p 串的连接算法 Status StrDelete(SSstring&S,int pos,int len)if(posS0|len=S0)S0=pos-1;else for(i=pos+len;i=S0;i+)Si-len=Si;S0=
8、S0-len;return OK;4.2.1 定长顺序存储表示定长顺序存储表示p 子串的删除算法4.2 串的表示和实现4.2.1、定长顺序存储表示4.2.2、堆分配存储表示4.2.3、串的块链存储表示4.2.2 堆分配存储表示堆分配存储表示 typedef struct char*ch;/若是非空串,则按串长分配存储区,若是非空串,则按串长分配存储区,/否则否则ch为为NULL int length;/串长度串长度 HString;p 堆分配存储表示的C语言实现Status Concat(HString&T,HString S1,HString S2)/用用T返回由返回由S1和和S2联接而成的
9、新串联接而成的新串 if(T.ch)free(T.ch);/释放旧空间释放旧空间 if(!(T.ch=(char*)malloc(S1.length+S2.length)*sizeof(char)exit(OVERFLOW);T.ch0.S1.length-1=S1.ch0.S1.length-1;T.length=S1.length+S2.length;T.chS1.lengthT.length-1=S2.ch0.S2.length-1;return OK;/Concat4.2.2 堆分配存储表示堆分配存储表示p 堆分配存储表示的串连接算法 Status SubString(HString&
10、Sub,HString S,int pos,int len)if(pos S.length|len S.length-pos+1)return ERROR;if(Sub.ch)free(Sub.ch);/释放旧空间释放旧空间 if(!len)Sub.ch=NULL;Sub.length=0;/空子串空子串 else ./完整子串完整子串 return OK;/SubString4.2.2 堆分配存储表示堆分配存储表示p 堆分配存储表示的求子串算法 Sub.ch=(char*)malloc(len*sizeof(char);Sub.ch0.len-1=Spos-1.pos+len-2;Sub.l
展开阅读全文