串类型的定义串的表示与实现串的模式匹配算法串操作应用举例ppt课件.ppt
《串类型的定义串的表示与实现串的模式匹配算法串操作应用举例ppt课件.ppt》由会员分享,可在线阅读,更多相关《串类型的定义串的表示与实现串的模式匹配算法串操作应用举例ppt课件.ppt(55页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、n n串类型的定义串类型的定义n n串的表示和实现串的表示和实现n n串的模式匹配算法串的模式匹配算法n n串操作应用举例串操作应用举例1、了解串的概念;、了解串的概念;学习要点学习要点2、熟悉串的基本运算的定义、熟悉串的基本运算的定义及实现方法;及实现方法;3、掌握基本串匹配算法。、掌握基本串匹配算法。在在较早较早的程序设计语言中,字符串的程序设计语言中,字符串(简称串)是作为(简称串)是作为输入或输出的常量输入或输出的常量(是直接量,不参加运算)出现,而非数出现,而非数值处理的对象基本上是字符串数据。这值处理的对象基本上是字符串数据。这就要求字符串也能以就要求字符串也能以变量变量的形式出现
2、,的形式出现,能进行一系列字符串能进行一系列字符串操作操作(运算)。目目前前大多数程序设计语言都支持串这种数大多数程序设计语言都支持串这种数据类型。据类型。1、串、串 2、串长串长:串中所包含的字符个数。串中所包含的字符个数。3、空串空串:长度为零的串,它不包含任何字符。长度为零的串,它不包含任何字符。记作记作“”4、子串串:串中任意个串中任意个连续的连续的字符组成的子序列。字符组成的子序列。5、主串主串:包含子串的串。包含子串的串。4.14.1串类型的定义串类型的定义基本概念基本概念:零个或多个字符组成的有限序列,即数零个或多个字符组成的有限序列,即数据元素为字符的线性表。一般记为据元素为字
3、符的线性表。一般记为S=a1a2.an,其中,其中,S是是串名串名,单引号括起的字符序列是单引号括起的字符序列是串值串值。7、子串在主串中的位置、子串在主串中的位置:子串在主串中子串在主串中第一第一次出现次出现时,子串的时,子串的第一个字符第一个字符在主串在主串中的位置。中的位置。6、字符在串中的位置、字符在串中的位置:字符在序列中的序号。字符在序列中的序号。8、两个串相等、两个串相等:两个串的长度相等,并且各两个串的长度相等,并且各个个对应位置的字符都相等对应位置的字符都相等时才相等。时才相等。9、空格串、空格串:由一个或由一个或多个多个空格组成的串,空格组成的串,其长度为串中空格字符的个数
4、。它其长度为串中空格字符的个数。它与空串与空串是不同的概念。是不同的概念。串的串的逻辑结构逻辑结构和线性表极为相似,区和线性表极为相似,区别仅在于串的数据对象为字符集。别仅在于串的数据对象为字符集。串的基本操作和线性表有很大差别:串的基本操作和线性表有很大差别:在线性表的基本操作中,大多以在线性表的基本操作中,大多以“单单个元素个元素”作为操作对象;作为操作对象;在串的基本操作中,通常以在串的基本操作中,通常以“串的整串的整体体”作为操作对象作为操作对象。ADTString 数据对象数据对象:Dai|aiCharacterSet,i=1,2,.,n,n0数据关系数据关系:R1|ai-1,aiD
5、,i=2,.,n 基本操作:基本操作:ADTStringADT串的定义串的定义StrAssign(&T,chars)/串赋值串赋值初始条件:初始条件:chars是字符串常量是字符串常量。操作结果:操作结果:把把chars赋为赋为T的值的值。StrCopy(&T,S)/串复制串复制初始条件:初始条件:串串S存在。存在。操作结果:操作结果:由串由串S复制得串复制得串T。DestroyString(&S)/串销毁串销毁初始条件初始条件:串:串S存在。存在。操作结果:操作结果:串串S被销毁。被销毁。StrEmpty(S)/串判空串判空初始条件:初始条件:串串S存在。存在。操作结果:操作结果:若若 S
6、为空串,则返为空串,则返TRUE,否则返回否则返回FALSE。StrCompare(S,T)/串比较串比较例如:例如:StrCompare(data,state)0初始条件:初始条件:串串S和和T存在。存在。操作结果:操作结果:若若S T,则返回值,则返回值 0;若若S T,则返回值,则返回值 0;若若S T,则返回值,则返回值 0StrLength(S)/求串长求串长初始条件:串 S 存在。操作结果:返回 S 的元素个数,称为串的长度。Concat(&T,S1,S2)/串联接串联接例如:Concate(T,man,kind)求得求得T=mankind 初始条件:初始条件:串串S1和和S2存在
7、。存在。操作结果:操作结果:用用T返回由返回由S1和和S2联接而成的新串。联接而成的新串。SubString(&Sub,S,pos,len)/求子串求子串初始条件:初始条件:串串S存在,存在,1posStrLength(S)且且0lenStrLength(S)-pos+1。操作操作结果:结果:用用Sub返回串返回串S的第的第pos个字符起长度为个字符起长度为len的子串。的子串。子串为子串为“串串”中的一个字符子序列。中的一个字符子序列。SubString(sub,commander,1,9)求得求得sub=commander SubString(sub,commander,9,1)求得求得s
8、ub=r 例如:例如:SubString(sub,commander,4,3)求得求得sub=man;SubString(sub,student,5,0)得得sub=关于参数关于参数len(子串长度)的说明:(子串长度)的说明:长度为长度为0的子串为的子串为“合法合法”串串空串。空串。事实上对任何串事实上对任何串S和位置和位置pos都有:都有:SubString(sub,commander,4,7)得得sub=mander SubString(sub,S,pos,0)得得sub=;有时对有时对len放宽到放宽到lenStrLength(S)-pos+1,此时规定此时规定SubString(su
9、b,S,pos,len)的的值取值取S的第的第pos个字符到个字符到S的最后一个字符的最后一个字符作为作为子串(长为子串(长为StrLength(S)-pos+1)。)。Index(S,T,pos)/(子子)串串(位置位置)定位定位 初始条件:初始条件:串串S S和和T T存在,存在,T T是非空串,是非空串,1posStrLength(S)1posStrLength(S)。操作结果:操作结果:若主串若主串 S S 中存在和串中存在和串T T值相同值相同 的子串的子串,则返回它在主串则返回它在主串S S中第中第 pos pos个字符之后第一次出现的位个字符之后第一次出现的位 置置;否则函数值为
10、否则函数值为0 0。假设假设S=abcaabcaaabc,T=bca Index(S,T,1)=Index(S,T,3)=Index(S,T,8)=“子串在主串中的位置子串在主串中的位置”意指子串意指子串中的第一个字符在主串中的位序。中的第一个字符在主串中的位序。2;6;0;Replace(&S,T,V)/串替换串替换初始条件:初始条件:串串S,T和和 V 均已存在,均已存在,且且 T 是非空串。是非空串。操作结果:操作结果:用用V V替换主串替换主串S S中出现的所有与中出现的所有与 (模式串)(模式串)T T相等的不重叠的子串。相等的不重叠的子串。例如:例如:假设假设S=abcaabcaa
11、abca,T=bca 若若V=x,则经置换后得到则经置换后得到S=axaxaax 若若V=bc,则经置换后得到则经置换后得到S=abcabcaabc StrInsert(&S,pos,T)/串插入串插入例如:例如:S=chater,T=rac,则执行则执行StrInsert(S,4,T)之后得到之后得到S=character 初始条件:初始条件:串串S和和T存在,存在,1posStrLength(S)1。操作结果:操作结果:在串在串S的第的第pos个字符之前插入个字符之前插入串串T。StrDelete(&S,pos,len)/串删除串删除初始条件:初始条件:串串S存在存在,1posStrLen
12、gth(S)-len+1。操作结果:操作结果:从串从串S中删除第中删除第pos个字符个字符起长度为起长度为len的子串。的子串。ClearString(&S)/串清除串清除初始条件:初始条件:串串S存在。存在。操作结果:操作结果:将将S清为空串。清为空串。在上述抽象数据类型定义的在上述抽象数据类型定义的13种操作中,种操作中,串赋值串赋值StrAssign、串复制、串复制Strcopy、串比较串比较StrCompare、求串长、求串长StrLength、串联接串联接Concat以及求子串以及求子串SubString等六种操作构成串类型的最小操作子集。等六种操作构成串类型的最小操作子集。这些操作
13、不可能利用其他串操作来实现,这些操作不可能利用其他串操作来实现,反之,其他串操作(除串清除反之,其他串操作(除串清除ClearString和串和串销毁销毁DestroyString外)可在这个最小操作子外)可在这个最小操作子集上实现。集上实现。例如,可利用可利用串比较、求串长和求子串等串比较、求串长和求子串等操作实现定位函数操作实现定位函数Index(S,T,pos)。StrCompare(SubString(S,i,StrLength(T),T)TT串串串串 TT串串串串iposStrLength(S)StrLength(T)+1算法的基本思想:算法的基本思想:?=0S串串 在pos到到St
14、rLength(S)StrLength(T)+1范围内范围内寻求使下式成立的寻求使下式成立的i值值TT串串串串ipos+1intIndex(StringS,StringT,intpos)/T为非空串。若主串为非空串。若主串S中第中第pos个字符之后存在与个字符之后存在与T相等的相等的/子串,则返回第一个这样的子串在子串,则返回第一个这样的子串在S中的中的位置,否则返回位置,否则返回0if(pos0)n=StrLength(S);m=StrLength(T);i=pos;while(i=n-m+1)SubString(sub,S,i,m);if(StrCompare(sub,T)!=0)+i;e
15、lsereturni;return0;/S中不存在与中不存在与T相等的子串相等的子串/Index利用利用最小操作子集最小操作子集中的操作也可实现中的操作也可实现串判空串判空StrEmpty(S)、串替换串替换Replace(&S,T,V)、串删除串删除StrDelete(&S,pos,len)、串插入串插入 StrInsert(&S,pos,T)等操作。等操作。留作习题若在程序设计语言中,串只是作为若在程序设计语言中,串只是作为输入或输出的常量出现,则只需存储此输入或输出的常量出现,则只需存储此串的串值,即字符序列即可。但在多数串的串值,即字符序列即可。但在多数非数值处理的程序中,串也以变量的
16、形非数值处理的程序中,串也以变量的形式出现。式出现。4.24.2 串的串的表示表示和实现和实现串有三种机内表示方法串有三种机内表示方法:一、串的定长顺序存储表示二、串的堆分配存储表示三、串的块链存储表示用一组地址连续的存储单元存储串值的字符用一组地址连续的存储单元存储串值的字符序列。该结构可用定长数组描述如下:序列。该结构可用定长数组描述如下:#defineMAXSTRLEN255/可在可在255以内定义最大串长以内定义最大串长typedefunsignedcharSstringMAXSTRLEN+1;/0号单元存放串的长度号单元存放串的长度一、串的定长顺序存储表示一、串的定长顺序存储表示 对
17、串的长度有两种表示方法对串的长度有两种表示方法:1.1.以下标为以下标为0 0的数组分量存放串的实际长度的数组分量存放串的实际长度 (如如 PASCALPASCAL语言语言),),特点是便于进行某些操作特点是便于进行某些操作;2.2.在串值后面加不计入串长的结束标记在串值后面加不计入串长的结束标记字符字符(如如C C 语言采用语言采用“0”0”),此时的此时的串长为隐含值串长为隐含值,特点是特点是 访问容易访问容易,但删除或插入麻烦但删除或插入麻烦。说明说明:串的实际长度可在预定义长度的范围内随意设定,串的实际长度可在预定义长度的范围内随意设定,超过预定义长度的串值则被超过预定义长度的串值则被
18、“截断截断”。对超长部分实施截断操作正是对超长部分实施截断操作正是串的定长顺序存储串的定长顺序存储表示的表示的弊端弊端。为克服此弊端,惟有不限定最大。为克服此弊端,惟有不限定最大串串 长,即动态分配串值的存储空间。长,即动态分配串值的存储空间。以下以串联接为例进行讨论在这种存以下以串联接为例进行讨论在这种存储结构表示下如何实现串的操作:储结构表示下如何实现串的操作:假设T,S1,S2都是 Sstring型变量,T为S1联结S2后所得之串,则联接运算Concat(&T,S1,S2)是将S1和S2的值分别传送到T的相应位置上,超过超过MAXSTRLEN的部分截断之的部分截断之。其运算结果可能有三种
19、情况:1)S10+S20MAXSTRLEN2)S10+S20MAXSTRLEN3)S10MAXSTRLEN1)S10+S20MAXSTRLEN串S1串S2串 TS10S20S10+S20MAXSTRLENMAXSTRLENMAXSTRLEN2)S10+S20MAXSTRLEN串 S1串 S2串 TS10S20MAXSTRLENMAXSTRLENMAXSTRLEN截去串串S2被全部截去。被全部截去。3)S10MAXSTRLEN串 S1串 S2串 TS10S20S10MAXSTRLENMAXSTRLENMAXSTRLENStatusConcat(SString&T,SString S1,SStri
20、ng S2)if(S10+S20=MAXSTRLEN)/不截断不截断 T1.S10=S11.S10;TS10+1.S10+S20=S21.S20;T0=S10+S20;uncut=TRUE;else/截断截断if(S10MAXSTRSIZE)T1.S10=S11.S10;TS10+1.MAXSTRLEN=S21.MAXSTRLENS10;T0=MAXSTRLEN;uncut=FALSE;else T0.MAXSTRLEN=S10.MAXSTRLEN;/T0=S10=MAXSTRLEN uncut=FALSE;return uncut;/Concatq在串的顺序存储结构中,在串的顺序存储结构中,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 类型 定义 表示 实现 模式 匹配 算法 操作 应用 举例 ppt 课件
限制150内