严蔚敏数据结构-----chap04串.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文档。上传文档
查看更多
【试题1】(华中科技大学)若串s=bioinformatics,其子串的个数是________。 A. 15 B. 95 C. 35 D. 105 串的顺序存储结构 串的堆存储结构 为了处理在串操作中出现串的长度超过预定义的长 度的情况,可以采用堆分配的存储方式。 堆存储方式的特点:仍以一组地址的连续的存储单 元存放字符序列,但它们的存储空间是在程序执行过 程中动态分配的。在C语言中,存在一个称之为“堆” 的自由存储区,可由C语言中的malloc函数和free函数 管理,为了处理方便,规定串的长度也作为存储结构 的一部分。 串的块链存储结构 分析:用块大小为m的块链存储法表示一个n个字符的串,需要采用n/m个结点,对应本题,29 100个字符的长串需要29 100/60=485个大小为60的结点。 解答:A (中山大学)用块链存储法表示一个29 100个字符的长串,需要采用________个大小为60的结点。 A. 485 B. 495 C. 291 D. 305 串的模式匹配方法 定义 设s和t是给定的两个串,且s的长度大于t的长度, 在s中找到等于t的子串的过程称为串的模式匹配, 如果找到,则称为匹配成功,否则,匹配失败。 应用背景 模式匹配是一种重要的串操作,在文字处理等软 件中有着广泛的应用。如word。 简单的模式匹配算法(BF算法) BF算法的缺点 KMP算法 例如:在串S=”abcabcabdabba”中查找T=” abcabd” (我们可以假设从下标0开始): 先是比较S[0]和T[0]是否相等, 然后比较S[1] 和T[1]是否相等… 我们发现一直比较到S[5] 和T[5]才不等。如图: ???????????????????????????????????????????????????????????????????????????????????????????????????? 当这样一个失配发生时,T下标必须回溯到0开始, S下标回溯的长度与T相同,然后S下标增1,然后再次比较。 ??????????????????????????????????????????????????????????????????????????????????????????????????? 这次立刻发生了失配,T下标又回溯到开始,S下标增1, 然后再次比较。如图: ??????????????????????????????????????????????????????????????????????????????????????????????????? 又一次发生了失配,所以T下标又回溯到开始, S下标增1,然后再次比较。这次T中的所有字符 都和S中相应的字符匹配了。函数返回T在S中 的起始下标3。 ???????????????????????????????????????????????????????????????????????????????????????????????????? BF算法虽然简单,易于理解,但时间效率低。这是因为 在主串和子串已有相当多个字符相等的情况下,只要有一 个字符不相等,就需要重新将主串的比较位置后移一位, 之前做过的比较工作也需要重新进行。 为了克服这个缺点,D.E.Knuth、J.H.Morris和V.R.Pratt 提出了克努特—莫里斯—普拉特算法,简称KMP算法。 该算法主要消除了主串指针(i指针)的回溯,利用已经 得到的部分匹配结果将模式串右滑尽可能远的一段距离再 继续比较,从而使算法效率有某种程度的提高 KMP算法中,主串指针i不回溯,由模式串指针j退到某一个 位置k上,使模式串中的k之前的(k-1)个字符与主串中的i之 前的(k-1)个字符相等,这样可以减少匹配的次数,从而提 高效率。所以,KMP算法的关键在于如何找到k。 还是相同的例子,在S=”abcabcabdabba”中查找T=”abcabd”, 如果使用KMP匹配算法,当第一次搜索到S[5] 和T[5]不等后, S下标不是回溯到1,T下标也不是回溯到开始,而是根据T中 T[5]==’d’的模式函数值(next[5]=3,为什么?后面讲), 直接比较S[5] 和T[2]是否相等,因为相等,S和T的下标同时 增加;因为又相等,S和T的下标又同时增加。 最终在S中找到了T。 * * 第四章 串 数 据 结 构 4.1 串的定义 空串: 零个字符组成的串。 其中S为串名,用单引号括起来的为串值, n为串的长度。 每个字符可以是任意的AS

文档评论(0)

好文精选 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档