《数据结构》课件第5章(串).ppt

上传人(卖家):momomo 文档编号:5900361 上传时间:2023-05-14 格式:PPT 页数:13 大小:469.50KB
下载 相关 举报
《数据结构》课件第5章(串).ppt_第1页
第1页 / 共13页
《数据结构》课件第5章(串).ppt_第2页
第2页 / 共13页
《数据结构》课件第5章(串).ppt_第3页
第3页 / 共13页
《数据结构》课件第5章(串).ppt_第4页
第4页 / 共13页
《数据结构》课件第5章(串).ppt_第5页
第5页 / 共13页
点击查看更多>>
资源描述

1、第四章第四章 字符串字符串 字符串的基本概念字符串的基本概念 字符串的基本运算字符串的基本运算 字符串的存储结构字符串的存储结构 关于字符串的几个常用算法关于字符串的几个常用算法 5.1 字符串的基本概念字符串的基本概念例如例如:S1=“abc”S2=“FORTRAN_77”S3=“”=(空串空串)字符串是由字符串是由n 0个字符组成的有限序列个字符组成的有限序列,通常记为通常记为 S=“a1 a2 a3 an-1 an”其中其中,S表示串名表示串名(也称串变量也称串变量),),一对引号括起来的字一对引号括起来的字 符序列称为串值符序列称为串值,ai可以是字母、数字或其他允许的字可以是字母、数

2、字或其他允许的字 符。符。n 为串的长度为串的长度,长度为长度为0的串称为空串。的串称为空串。一一.字符串的定义字符串的定义 1.串值须用一对引号括起来,但引号不属于串值。串值须用一对引号括起来,但引号不属于串值。说明说明2.要区分空串与由空格字符组成的串的不同。要区分空串与由空格字符组成的串的不同。String=“String”1.子串:子串:串中若干个连续的字符组成的子序列串中若干个连续的字符组成的子序列。例如例如:S=“Beijing&Shanghai”T=“jing”2.主串主串:包含子串的串包含子串的串。3.位置:位置:(1).单个字符在主串中的位置单个字符在主串中的位置(2).).

3、子串在主串中的位置子串在主串中的位置 被定义为该被定义为该 字符在串中的序号。字符在串中的序号。被定义为主串中被定义为主串中 首次出现的该子串的第一个字符在主首次出现的该子串的第一个字符在主 串中的位置。串中的位置。例如例如:S=“Beijing&Nanjing&Shanghai”T=“jing”位置为位置为4 4二二.几个名词概念几个名词概念 的充分必要条件为两个字符串的长的充分必要条件为两个字符串的长度相等,度相等,并且对应位置上的字符相同。并且对应位置上的字符相同。4.两个字符串相等两个字符串相等“abcd”“bacd”“abcd”=“abcd”5.2 字符串的基本操作字符串的基本操作1

4、.String createNullStr(void)创建一个空串创建一个空串 2int IsNullStr(String s)判断串判断串s是否为空串,若为空串是否为空串,若为空串,则返回则返回1,否则返回否则返回0。3int length(String s)返回串返回串s的长度。的长度。4void Strassign(String&s,String t)将串将串t的值赋给串的值赋给串s,串,串s中的原值被覆盖掉。中的原值被覆盖掉。5void concat(String&s,String s1,String s2)返回将串返回将串s1和和s2拼接在一起构成一个新串拼接在一起构成一个新串s。6

5、String subStr(String s,int i,int j)在串在串s中中,求从串的第求从串的第i个字符开始连续个字符开始连续j个字符所构成的子串。个字符所构成的子串。7.int index(String s1,String s2)如果串如果串s2是是sl的子串的子串,则可求串则可求串s2在串在串s1中第一次出现的位置。中第一次出现的位置。8void replace(String&r,String s,String t)用串用串t替换主串替换主串r中的子串中的子串s。例如例如:S=“DATA STRUCTURE”5.3 串的存储结构串的存储结构一一.串的顺序存储结构串的顺序存储结构A

6、 TSAT R UUTCDR E#define MAXLEN 100 /串允许的最大字符个数串允许的最大字符个数struct SeqString /顺序串的类型顺序串的类型 char cMAXLEN+1;int length;求从求从s s所指的顺序串中第所指的顺序串中第i(i0)i(i0)个字符开始连续取个字符开始连续取j j个字个字符所构成的子串。符所构成的子串。求顺序表示串的子串求顺序表示串的子串SeqString substr(SeqString s,int i,int j)SeqString s1;if(i0)&(i0)if(s.lengthi+j-1)j=s.length-i+1;

7、/若从若从i开始取不够开始取不够j个字符,则能取几个就取几个个字符,则能取几个就取几个 for(k=1;kMAXLEN,需要将需要将t t的一部分截断,得到的的一部分截断,得到的 串串r r只包含只包含s s和和t t的一个子串;的一个子串;假设假设r,s,t都是前面定义的都是前面定义的string型变量,且型变量,且r是是s与与t连接后连接后得到的串,则连接运算得到的串,则连接运算concat(r,s,t)是将是将s与与t的串值分别传送的串值分别传送到到r相应的位置上。相应的位置上。void concat(SeqString&r,s,t,bool&p)if(s.length+t.length

8、MAXLEN)p=true;movch(r,s,1,1,s.length);movch(r,t,s.length+1,1,MaxLength-s.length);r.length=MAXLEN;void movch(SeqString&t,SeqString s,int i,int j,int num)for(k=0;k=num 1;k+)ti+k=sj+k;二二.求子串在串中的序号的运算求子串在串中的序号的运算 由于求子串在串中序号的运算由于求子串在串中序号的运算index(s,t)index(s,t),其主要工作是,其主要工作是确定已知串确定已知串s s中有无给定的子串中有无给定的子串t

9、t,因此,这个运算也称串的模,因此,这个运算也称串的模式匹配运算。式匹配运算。int index_bf(SeqString s,SeqString t,int&ind)/求子串求子串t在主串在主串s中的序号,从中的序号,从ind开始开始 i=ind;j=1;do if(s.chi=t.chj)i=i+1;j=j+1;else i=i-j+2;j=1;while(i=s.length)&(jt.length)return(i-t.length);else return(0);三三.子符串的置换运算子符串的置换运算 字符串的置换元算字符串的置换元算Replace(r,s,t),Replace(r,s,t),在在r r中查找有无和中查找有无和s s相同相同的子串,如果有则用的子串,如果有则用t t替换它,得到一个新串赋给替换它,得到一个新串赋给r r,再从合适,再从合适的位置重复上述过程,直到的位置重复上述过程,直到r r中已找不到和中已找不到和s s相同的子串为止。相同的子串为止。void Replace(SeqString&r,SeqString s,SeqString t)n=r.length;m=s.length;k=t.length;if(nn-m+1);

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 大学
版权提示 | 免责声明

1,本文(《数据结构》课件第5章(串).ppt)为本站会员(momomo)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|