串的定义和其基本运算.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
串的定义和其基本运算.ppt

第四章 串 几个术语 空串:长度为0的字符串; 空格串:由空格字符组成的字符串,长度1. 子串:字符串中任意个连续的字符构成的序列; 母串:包含该子串的字符串; 两串相等:两个字符串的长度相等且各对应位置上的字符都相同. 字符的位置:从1开始 子串的位置:该子串第一个字符的位置 4.1.2 串的基本运算 1. 求串的长度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串的定长顺序存储及基本运算 4.2.3模式匹配 设s和t是给定的两个串,在主串s中查找子串t的过程称为~。其中t也称为模式。 1.简单的模式匹配算法(BF算法) (1)算法思想: 2.改进后的模式匹配算法(KMP算法) 4.3 串的堆存储结构 4.3.1 串名的存储映像 1.带串长度的索引表 * 4.1 串的定义及其基本运算 4.2 串的定长顺序存储及基本运算 4.3 串的堆存储结构 作业6:P235(1,2) 4.1.1串的定义 定义:串(string)是由零个或多个任意字符组成的字符序列,又称为字符串(character string),一般记为: 4.1 串的定义及其基本运算 s=〝a1 a2 a3…an〞 说明: 1)其中s是串名,用双引号括起来的字符序列是串的值。 2)ai(1=i=n)可以是字母、数字或其他字符;n为串中字符的个数,称为串的长度,i是序号。 3)一个长度为零的串称为空串,表示为s =“”或?。 4)空格也是合法字符,空格串是字符,为空格的串。 4.2.1存储结构的实现 #define MAXSIZE 256 typedef struct {char data[MAXSIZE]; int curlen; }SeqString; 第一种: 第二种: #define MAXSIZE 256 char s[MAXSIZE]; a b e f i 0 2 5 6 s.curlen c d g h 1 3 4 7 8 s.data MAXSIZE-1 a b e f i 0 2 5 6 c d g h 1 3 4 7 8 \0 9 MAXSIZE-1 第三种: #define MAXSIZE 256 char s[MAXSIZE+1]; a b e f i 0 2 5 6 c d g h 1 3 4 7 8 9 9 MAXSIZE 4.2.2运算实现(采用第二种表示串长的方式) 1. 求串的长度StrLength(s); int StrLength(char s[]) {int len=0; while(s[len]!=‘\0’)len++; return len; } 2.串赋值 StrAssign(s1,s2); void StrAssign(s1,s2) char s1[ ], s2[ ] ; {int j=0; while(s2[j]!=‘\0’) {s1[j]=s2[j]; j++;} s1[j]=‘\0’; } 3. 两个串的连接StrConcat1(s1,s2,s) 4. 求某串的子串SubStr(s,i,len); 5.串比较StrCmp(s1,s2); 为运算方便,字符串采用定长存储,且用第三种方式表示串长: #define MAXSIZE 256 char s[MAXSIZE+1]; a b e f i 0 2 5 6 c d g h 1 3 4 7 8 9 9 MAXSIZE 例: 主串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=1 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 c i=2 j=2 if(s[i]==t[j]){i++;j++;} if(s[i]!=t[j]) {i回溯到本趟开始的下一个;

文档评论(0)

dmz158 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档