数据结构讲义4.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文档。上传文档
查看更多
数据结构讲义4

第四章 串 4.1 串类型的定义 4.2 串的表示和实现 4.2.1 定长顺序存储表示 4.2.2 堆分配存储表示 4.2.3 串的块链存储表示 4.3 串的模式匹配算法 问题: 在如下文本中查询关键词: As one of the oldest universities in China, Xian Jiaotong University is one of the nine universities in the elite C9 League of Chinese premier universities (Chinas Ivy Leauge). 查找关键词 Jiaotong University. 线性的数据结构 以字符序列为处理对象 //串的堆分配存储表示 typedef struct{ char *ch; int length; } HString; //基本操作函数说明 Status StrAssign(HString t, char *chars) //声称值为chars的串t int StrLength(HString s) // 求串s的长度 void ClearString(HString s) // 将串s清为空串 int StrCompare(HString s, HString t) // 串的比较 Status Concat(HString t, HString s1, HString s2) // 串的联结 Status SubString(HString sub, HString s, int pos, int len) //求子串 4.3 串的模式匹配算法 串的模式匹配(pattern matching)运算的应用在非常广泛。例如,在文本编辑程序中,我们经常要查找某一特定单词在文本中出现的位置。显然,解此问题的有效算法能极大地提高文本编辑程序的响应性能。 4.3 串的模式匹配算法 4.3 串的模式匹配算法 4.3 串的模式匹配算法 时间复杂度分析: 朴素模式匹配算法一旦比较不等,T右移一个字符并且下次从t0开始重新进行比较,对于目标S,存在回溯现象。 匹配失败的最坏情况:每趟匹配皆在最后一个字符不等,且有n-m+1趟匹配(每趟比较m个字符),共比较m*(n-m+1)次,由于mn,因此最坏时间复杂度O(n*m)。 匹配失败的最好情况:n-m+1次比较[每趟只比较第一个字符]。 匹配成功的最好情况:m次比较。 匹配成功的最坏情况:与匹配失败的最坏情况相同。 综上讨论:朴素模式匹配算法的时间复杂度为O(m*n) 4.3 串的模式匹配算法 4.3 串的模式匹配算法 4.3 串的模式匹配算法 * 数据结构 * 4.1 串类型的定义 Jiaotong University 串 4.1.1 串及其基本概念 串的定义:串(String)是零个或多个字符组成的有限序列。一般记作S=“a1a2a3…an”,其中S是串名,双引号括起来的字符序列是串值;其中元素ai(1≦i≦n)可以是字母、数字或其它字符。 串的长度:串中所包含的字符个数称为该串的长度。 空串:长度为零的串称为空串(Empty String),它不包含任何字符。 空格串:将仅由一个或多个空格组成的串称为空格串。注意:空串和空格串的不同,例如“ ”和“”分别表示长度为1的空格串和长度为0的空串。 4.1 串类型的定义 * 子串与主串:串中任意个连续字符组成的子序列称为该串的子串,包含子串的串相应地称为主串。通常将子串在主串中首次出现时的该子串的首字符对应的主串中的序号,定义为子串在主串中的位置。 例如,设A=“This is a string” B=“is”则B是A的子串,A为主串。B在A中出现了两次,其中首次出现所对应的主串位置是3。因此,称B在A中的位置为3。 相等:当且仅当两个串的长度相等,并且每个对应位置的字符都相等时,称两个串相等。例如,A=“BEIJING” B=“BEIJING”,则串A与串B相等。 * 4.1 串类型的定义 4.1.2 串的抽象数据定义 ADT String{ 数据对象:D={ai|ai∈CharacterSet,i=1,2,…,n,n?0} 数据关系:R={ai-1,ai|ai-1,ai∈D, i=2,…,n} 基本操作:StrAssign(T,chars) StrEmpty(

文档评论(0)

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

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

版权声明书
用户编号:5024214302000003

1亿VIP精品文档

相关文档