- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第4章 串 学习重点: 串的基本概念及串的特点 串的顺序存储方式及基本操作的实现算法 串的链式存储方式及基本操作的实现算法 串的索引存储方式 串的模式匹配的主要算法 第4章 串 4.1 串类型的定义 4.2 串的存储结构 4.3 串的操作 本章总结: 4.1 串类型的定义 串(或称字符串),是由零个或多个字符组成的有穷序列。一般记作:s="a0 a1 a2…a n-1" (n≥0)。 用双引号括起来的字符序列是串值,双引号是串标志,串中所含字符个数n称为该串的长度(或串长)。含零个字符的串称为空串,用Φ表示。字符在序列中的序号为该字符在串中的位置。 串中任意个连续字符组成的子序列称为该串的子串。包含子串的串相应地被称为主串。 C语言中,存储串时,每个字符在内存占用一个字节,并用特殊字符“\0”标记串结束。 注意:空格串与空串是不相同的。空串的长度为0,空格串的长度为串中空格字符的个数。 4.2 串的存储结构 4.2.1 串的顺序存储 4.2.2 串的链式存储 4.2.3 串的索引存储 4.2.1 串的顺序存储 顺序存储实现:在顺序串中,每个字符依次存放在一组连续的存储单元中。 串的顺序存储有两种方法:一种是每个存储单元只存一个字符,称为非紧缩格式。第二种,在每个存储单元中存放多个字符,称为紧缩格式。 4.2.2 串的链式存储 链串与一般的链表类似,链串中的一个结点可以存储一个或多个字符。 链串结点大小的选择将直接影响到串处理的效率。 存储密度=串值所占存储容量 / 实际分配存储容量 链串的类型定义如下: typedef struct Lnode { char data ; //存放字符 struct Lnode * next ; }*Linkstring ; 4.2.3 串的索引存储 索引存储实现:用一个表组织每个串的首地址和串长即可实现对这个串的引用,这个表被称为串记录的索引表(符号表)。 结构定义如下: struct HSstring { int str; //串在所分配存储区间的首地址 int length; //串的长度 }strindex[maxlen]; //strindex为记录串信息的索引表。 4.3 串的操作 注意:串操作主要以“串整体”为操作对象。 4.3.1 串常用操作的实现 4.3.2 模式匹配操作 4.3.1 串常用操作的实现 基本操作在顺序结构上的实现 基本操作在链式结构上的实现 基本操作在顺序结构上的实现 操作一:strcopy(s,t) 操作二:strequal(s,t) 操作三:strlength(s) 操作四:strconcat(s,t) 操作五:strsub(s,i,j) 操作六:strdelsub(s,i,j) 操作七:strins(s1,i,s2) 操作八:strrep(s,i,j,t) 基本操作在链式结构上的实现 操作一:strcopy(s,t) 操作二:strequal(s,t) 操作三:strlength(s) 操作四:strconcat(s,t) 操作五:strsub(s,i,j) 操作六:strdelsub(s,i,j) 操作七:strins(s1,i,s2) 操作八:strrep(s,i,j,t) 4.3.2 模式匹配操作 模式匹配操作就是在主串s中定位子串t的操作,即在主串s中找到第一个与子串t相等的子串,通常把主串s称为目标串,把子串t称为模式串。模式匹配成功是指在s中找到一个;不成功则指s中不存在t。 模式匹配操作的实现算法: Brute—Force算法 Knuth-Morris-Pratt算法(KMP算法) 本章总结: 串是由零个或多个字符组成的有穷序列。由串中任意个连续的字符组成的子序列称为该串的子串。包含子串的串相应地称为主串。 串有三种存储结构:顺序存储结构、链式存储结构和索引存储结构。比较:顺序存储结构简单,操作方便但存储的串的长度受到限制;串的链式存储操作方便,存储时串长不受限制,为了提高空间利用率需要考虑存储密度;串的索引存储结构是以上两种结构的折中实现。 串的模式匹配的Brute-Force算法原理简单,但是出现多个 “部分匹配” 时,算法的效率将会变低。KMP算法中无需回溯主串指针,适用于外部数据输入时
您可能关注的文档
最近下载
- 2025-2026年国家公务员考试《申论》真题及参考答案.doc VIP
- 川教版(2019)初中信息科技Python编程复习单.docx VIP
- DTII(A)带式输送机计算书(带表1-4)Ver1.2(95版)(2012.12.18).xls VIP
- 医疗器械经营财务管理培训.pptx VIP
- 麻醉前肺功能评估.ppt VIP
- 新课标体育与健康水平二教案.pdf VIP
- 贵州教育出版社小学五年级上册综合实践教案.pdf VIP
- 博物馆学概论课件:博物馆藏品管理历史、藏品意义与藏品研究.pptx VIP
- 2025高中政治部编版选择性必修二《法律与生活》必背法律条文.pdf VIP
- SEO培训课件教学课件.pptx VIP
文档评论(0)