串类型的定义串的表示和实现串的模式匹配算法.ppt
《串类型的定义串的表示和实现串的模式匹配算法.ppt》由会员分享,可在线阅读,更多相关《串类型的定义串的表示和实现串的模式匹配算法.ppt(41页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 1 第第4 4章章 串串串类型的定义串的表示和实现串的模式匹配算法 Still waters run deep.流静水深流静水深,人静心深人静心深 Where there is life,there is hope。有生命必有希望。有生命必有希望 2 第第4 4章章 串串重点:(1)ADT串的设计、实现方法和基本操作;(2)串的简单模式匹配算法,KMP算法。难点:串的模式匹配算法中的KMP算法。本章重点难点3 4.1 串类型的定义 4.2 串的表示和实现 4.3 串的模式匹配算法 4 第第4 4章章 串串4.1串类型的定义串类型的定义 串是由零个或多个字符组成的有限序列。记为:s=”a1a2
2、an”(n0)其中,s是串的名,用双引号括起来的字符序列是串的值。(1)串的长度:串中字符的数目n。(2)空串(Null string):长度为零的串。(3)子串:串中任意个连续的字符组成的子序列。p 串的有关术语p 串(String)的定义 5 第第4 4章章 串串4.1串类型的定义串类型的定义 (4)主串 包含子串的串相应地称为主串。(5)串相等 只有当两个串的长度相等,并且各个对应位置的字符都相等,称两串相等。(6)空格串(空白串)(blank string)由一个或多个空格组成的串。要和“空串”区别,空格串有长度就是空格的个数。p 串的有关术语 6 第第4 4章章 串串4.1串类型的定
3、义串类型的定义 (1)串数据对象约束为字符集。(2)基本操作的对象不同,线性表以“单个元素”为操作对象;串以“串的整体”为操作对象,操作的一般都是子串。p 串与一般线性表的区别 7 第第4 4章章 串串ADTString数据对象数据对象:数据关系数据关系:基本操作:基本操作:ADTStringp串的ADT定义见下页见下页Dai|aiCharacterSet,i=1,2,.,n,n0R1|ai-1,aiD,i=2,.,n4.1串类型的定义串类型的定义 8 第第4 4章章 串串p基本操作:StrAssign(&T,chars)/根据串常量根据串常量chars生成串生成串TStrCopy(&T,S)
4、/把串把串S中内容拷贝到中内容拷贝到T串串DestroyString(&S)/销毁串销毁串SStrEmpty(S)/判断串是否空判断串是否空StrCompare(S,T)/比较串比较串S和和TStrLength(S)/求串长求串长Concat(&T,S1,S2)/连接串连接串4.1串类型的定义串类型的定义 9 第第4 4章章 串串p基本操作:SubString(&Sub,S,pos,len)/求子串求子串Index(S,T,pos)/子串定位子串定位ClearString(&S)/清空串清空串SStrDelete(&S,pos,len)/删除子串删除子串Replace(&S,T,V)/把串把串
5、S中符合中符合T的子串替换的子串替换StrInsert(&S,pos,T)/插入子串插入子串4.1串类型的定义串类型的定义 10 第第4 4章章 串串4.2 串的表示和实现4.2.1、定长顺序存储表示4.2.2、堆分配存储表示4.2.3、串的块链存储表示 11 第第4 4章章 串串4.2.1定长顺序存储表示定长顺序存储表示#defineMAXSTRLEN255/用户可在用户可在255以内定义最大串长以内定义最大串长typedefunsignedcharSstringMAXSTRLEN+1;/0号单元存放串的长度号单元存放串的长度SstringS;p串的顺序存储C语言实现 12 第第4 4章章
6、串串StatusConcat(SStringS1,SStringS2,SString&T)/用用T返回由返回由S1和和S2联接而成的新串。若未截断联接而成的新串。若未截断,则返回则返回TRUE,否则,否则FALSE。.returnuncut;/ConcatT1.S10=S11.S10;TS10+1S10+S20=S21S20;T0=S10+S20;uncut=TRUE;if(S10+S20=MAXSTRLEN)/未截断未截断4.2.1定长顺序存储表示定长顺序存储表示p串的连接算法 13 第第4 4章章 串串StatusConcat(SStringS1,SStringS2,SString&T)/
7、用用T返回由返回由S1和和S2联接而成的新串。若未截断联接而成的新串。若未截断,则返回则返回TRUE,否则,否则FALSE。.returnuncut;/Concatelseif(S10MAXSTRSIZE)/截断截断T1.S10=S11.S10;TS10+1MAXSTRLEN=S21MAXSTRLENS10;T0=MAXSTRLEN;uncut=FALSE;4.2.1定长顺序存储表示定长顺序存储表示p串的连接算法 14 第第4 4章章 串串StatusConcat(SStringS1,SStringS2,SString&T)/用用T返回由返回由S1和和S2联接而成的新串。若未截断联接而成的新串
8、。若未截断,则返回则返回TRUE,否则,否则FALSE。.returnuncut;/Concatelse/截断截断(仅取仅取S1)T0.MAXSTRLEN=S10.MAXSTRLEN;/T0=S10=MAXSTRLENuncut=FALSE;4.2.1定长顺序存储表示定长顺序存储表示p串的连接算法 15 第第4 4章章 串串StatusStrDelete(SSstring&S,intpos,intlen)if(posS0|len=S0)S0=pos-1;elsefor(i=pos+len;i=S0;i+)Si-len=Si;S0=S0-len;returnOK;4.2.1定长顺序存储表示定长顺
9、序存储表示p子串的删除算法 16 第第4 4章章 串串4.2 串的表示和实现4.2.1、定长顺序存储表示4.2.2、堆分配存储表示4.2.3、串的块链存储表示 17 第第4 4章章 串串4.2.2堆分配存储表示堆分配存储表示typedefstructchar*ch;/若是非空串,则按串长分配存储区,若是非空串,则按串长分配存储区,/否则否则ch为为NULLintlength;/串长度串长度HString;p堆分配存储表示的C语言实现 18 第第4 4章章 串串StatusConcat(HString&T,HStringS1,HStringS2)/用用T返回由返回由S1和和S2联接而成的新串联接
10、而成的新串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;returnOK;/Concat4.2.2堆分配存储表示堆分配存储表示p堆分配存储表示的串连接算法 19 第第4 4章章 串串StatusSubString(HStri
11、ng&Sub,HStringS,intpos,intlen)if(posS.length|lenS.length-pos+1)returnERROR;if(Sub.ch)free(Sub.ch);/释放旧空间释放旧空间if(!len)Sub.ch=NULL;Sub.length=0;/空子串空子串else./完整子串完整子串returnOK;/SubString4.2.2堆分配存储表示堆分配存储表示p堆分配存储表示的求子串算法 20 第第4 4章章 串串Sub.ch=(char*)malloc(len*sizeof(char);Sub.ch0.len-1=Spos-1.pos+len-2;Su
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 类型 定义 表示 实现 模式 匹配 算法
限制150内