数据结构第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文档。上传文档
查看更多
《数据结构》第四章 第 31页 4.2.3 串的链式存储结构 采用链表的方式存储串值,即串的链式存储结构,简称链串。在链表方式中,每个结点设定一个字符域char,存放字符;设定一个指针域next,存放所指向的下一个结点的地址。 通常将每个结点所存储的字符个数称为结点的大小。如果每个结点的char域只存放一个字符,虽然能使串的运算最容易进行,运算速度最快,但每个字符都要设置一个next指针域,将会导致存储空间利用率降低。为了提高存储空间的利用率,设置结点的char域存放多个字符时,称为大结点结构。这种链表方式虽然起到了提高存储空间利用率的作用,但运算速度较单字符结点的链表方式要慢。图4-2和图4-3表示了串TEACHERSTUDENT的结点大小分别为l和4的链式存储结构。 《数据结构》第四章 第 32页 《数据结构》第四章 第 33页 用单链表存放串时,存储密度定义为: 存储密度= 为了提高存储密度,结点的大小一般大于1,所以称为块链结构。例如,采用块链结构的文本编辑系统中,一个结点可存放80个字符,此时结点的大小是80。 当结点的大小大于1时,存放一个串需要的结点数目不一定是整数,而分配结点时总是以完整的结点为单位进行的。因此,为使一个串能存放在整数个结点里,应在串的末尾填上不属于串值的特殊字符,以表示串的终结。如图4-3中最后一个结点的char域并未被字符占满,此时,应在这些未占用的char域里补上不属于字符集的特殊符号(例如“#”),以示区别。 《数据结构》第四章 第 34页 在链式存储结构中,串的类型定义描述如下: #define CHUNKSIZE 80 /* 可由用户定义的块大小 */ typedef struct /* 结点结构*/ { char ch[CHUNKSIZE]; struct Chunk *next; }Chunk; typedef struct /*串的链表结构*/ { Chunk *head, *tail; /*串的头和尾指针*/ int curlen; /*串的当前长度*/ } LString; 串值的链式存储结构对串的某些操作(如联接操作等)有一定不便之处,总的上不如另外两种存储结构灵活,它占用存储量大且操作复杂。 《数据结构》第四章 第 35页 4.3 串的模式匹配 串的模式匹配又称定位运算,是在主串s中定位子串t的操作。首先判断主串s中是否存在子串t,如果存在,则模式匹配成功,并输出子串t在主串s中第一次出现的位置;如果不存在,模式匹配失败。在4.1.2节中介绍的串定位运算StrIndex(s,t,pos)的功能就是模式匹配。在串匹配中,一般将主串称为目标串,子串称为模式串。 《数据结构》 第四章 串 第1页 《数据结构》第四章 目 录 4.1 串的逻辑结构 4.2 串的存储结构 4.3 串的模式匹配 4.4 案例实现——文本文件中单词的检索和计数 4.0 案例导引 知识目标: 熟悉串的十种基本操作的定义,并能利用这些基本操作来实现串的其它各种操作 熟练掌握在串的定长顺序存储结构上实现串的各种操作的方法 理解串的堆存储结构以及在其上实现串操作的基本方法 理解串的链式存储结构 理解串的朴素模式匹配算法(BF算法) 技能目标: 能应用串的各种基本操作和模式匹配算法解决实际问题 第2页 《数据结构》第四章 4.0 案例导引 第3 页 《数据结构》第四章 案例:文本文件单词的检索和计数 编程建立一个文本文件,每个单词都不包含空格且不跨行,单词由字符序列构成且区分大小写。要求统计给定单词在文本文件中出现的总次数,检索输出某个单词出现在文本中的行号、在该行中出现的次数以及位置。 案例探析: 本案例需要选择合适的结构完成字符串的建立,实现串的基本操作,利用朴素模式匹配算法实现对文本文件中单词的检索和计数。 《数据结构》第四章 第4 页 4.1 串的逻辑结构 4.1.1 串的定义 串(String)是字符串的简称。它是一种在数据元素的组成上具有一定约束条件的线性表,即要求组成线性表的所有数据元素都是字符。所以,也可以这样定义串:串是由零个或多个字符组成的有限序列。 串一般记作:s= “a1a2...an” (n≥0),其中,s是串的名称,用双引号()括起来的字符序列是串的值;双引号本身不是串的值,它们是串的标记,以便将串与标识符(如变量名)加以区别,称为定界符;ai(1≤i≤n)可以是字母、数字或其

文档评论(0)

132****9295 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档