数据结构c语言PPT7.pptVIP

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

第四章 串 4.1 串的定义及基本运算 4.2 串的表示和实现 4.3 串的模式匹配 4.3.1 基本的模式匹配算法 4.3.2 KMP模式匹配算法 4.4 串操作应用举例 4.1 串的定义及基本运算 串的定义   串(String)是零个或多个字符组成的有限序列。 一般记作:S=“a1a2a3…an”, S:串名; “a1a2a3…an”:串值,双引号括起来的字符序列; ai(1≤i≤n)可以是字母、数字或其它字符; 串:取值范围受限的线性表,数据对象约束为字符集。 串的长度:串中所包含的字符个数; 长度为零的串称为空串(Empty String),它不包含任何字符。 空白串:通常将仅由一个或多个空格组成的串称为空白串(Blank String)。 注意:空串和空白串的不同。 顺序串的操作实现 串连接Concat(T,S1,S2) 练习:以串的堆分配存储表示作为串的类型描述。 设计一个非递归算法求一个串的逆串。 0 ~ S.length/2-1 ; (S.length+1)/2 ~ S.length-1 void Reverse( HString S) { for( i=0; iS.length/2; i++){ temp = S.ch[i]; S.ch[i] = S.ch[S.length-i-1]; S.ch[S.length-i-1] = temp; } } 2. 用递归算法实现串的逆串,要求不另设串存储空间。 void Reverse( HString S, int i) { if( i=S.length/2) return; else{ temp = S.ch[i]; S.ch[i] = S.ch[S.length-i-1]; S.ch[S.length-i-1] = temp; Reverse( S, i+1); } } 3. (4.10)编写对串求逆的递推算法。 S = “a1a2……an” f(0)=Φ,a1f(0), a2f(1), …, anf(n-1). StringType Reverse( StringType S) { i=1; StrAssign(S1, “”); StrAssign(S2, “”); while(i=StrLength(S));{ StrAssign( S2, SubString(S, i, 1)); StrAssign( S1, Concat(S2, S1)); i++; } return S1; } 4. (4.10)编写对串求逆的递归算法。 4. (4.10)编写对串求逆的递归算法。 StringType Reverse( StringType S) { StrAssign(S1, “”); if( StrLength(S) 1);{ StrAssign( S1, Reverse(SubString(S, 1, StrLength(S)-1) ) ); StrAssign( S1, Concat(SubString(S, StrLength(S),1), S1) ); } else StrAssign(S1, S); return S1; } Brute-Force简称为BF算法,亦称简单匹配算法,基本思路: 从目标串s=“s1s2…sn的第一个字符开始和模式串t=“t1t2…tm中的第一个字符比较,若相等,则继续逐个比较后续字符;否则从目标串s的第二个字符开始重新与模式串t的第一个字符进行比较。依次类推,若从模式串s的第i个字符开始,每个字符依次和目标串t中的对应字符相等,则匹配成功,该算法返回i;否则,匹配失败,函数返回0。 子串定位int Index( SString S, SString T, int pos) { //返回子串T在主串S中从第pos个字符开始的位置 //要求T非空,1≤pos ≤Strlength(S) i= pos; j = 1; while( i = Strlength(S) j = Strlength(T)){ if(S[i] ==

文档评论(0)

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

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档