- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构中的串会计学第1页/共40页第4章 串4.1 串的定义和操作4.2 串的表示和实现定长顺序存储表示堆分配存储表示块链存储表示4.3 正文模式匹配**4.4 正文编辑-串操作应用举例44第4章 串第2页/共40页字符串数据是计算机非数值处理的主要对象之一。在早期字符串字符串作为输入输出的常量出现,现已发展成为字符串类型,可以进行一系列的操作。字符串一般简称为串。在汇编和编译程序中,源程序是字符串数据。在事务处理程序中,顾客的姓名和地址及货物的名称、产地等也是字符串。此外,如信息检索系统、文字编辑程序、自然语言翻译系统等都是以字符串为处理对象。然而,目前的计算机硬件结构主要是面向数值计算的需要,基本上没有提供处理字符串数据操作的指令,需要用软件来实现字符串类型。由于各种应用具有不同的特点,要有效的实现字处理,必须根据具体情况使用合适的存储结构。4.1 串的定义和操作第3页/共40页串(String),或称字符串是由零个或多个字符组成的有限序列。一般记为: S = “a0a1…an-1” (n ≥ 0 ) 其中,S是串的名称,用双号括起来的字符序列是串的值;ai (0≤i≤n-1)可以是字母、数字或其它字符(字符的序号从0开始,与C、C++、JAVA等语言的习惯一致);串中字符的数目n称为串的长度。零个字符的串称为空串(null string),它的长度为零。串中任意个连续的字符组成的子序列称为该串的子串。包含子串的的串相应地称为主串。通常称字符在序列中的序列号为该字符在串中的位置。子串在主串中的位置则以子串第0个字符在主串的位置来表示。4.1 串的定义和操作第4页/共40页例如:下面a,b,c,d都是串a=“BEI” 长度为3b=“JING”长度为4c=“BEIJING” 长度为7d=“BEI JING” 长度为8串的逻辑结构和线性表极为相似,区别仅仅在于串的数据对象约束为字符集。但是串的基本操作和线性表有很大的差别。在线性表的操作中大多数以“单个元素”为操作对象,而在串的操作中大多数以“串的整体”为操作对象。4.1 串的定义和操作第5页/共40页两个串之间可以进行比较。称两个串相等,当且仅当这两个串的值相等,包括两个串的长度相等,并且各个对应位置的字符都相等。当两个串不相等时,可按“字典顺序”分大小。令s= “s0s1…sm-1” (m0)t= “t0t1…tn-1” (n0)假设,两者最大有前k个子序列相等(最大相等前缀子串),s和t的大小由sk和tk的大小来决定。在C语言中字符的大小按ASCII码的大小为准为了清楚起见我们以后用Φ来表示空串4.1 串的定义和操作第6页/共40页串值必须用一对双引号括起来,但双引号不属于串,它的作用只是为了避免与变量或常量混淆。例如:x = “123”;其中,X是一个串变量名,赋给它的值是字符序列123,而不是整数123。之间可以进行比较。aString=“aString”;左边的aString是一个串变量名,而右边的字符序列aString是赋给它的值在各种应用中,空格通常是串的字符集合中的一个元素,可以出现在其它字符之间,由一个或多个空格组成的串称为空格串“ ”; 和 “ ”;都是空格串。第7页/共40页串的基本操作(1)ADT String{ 数据对象: D={ai| ai∈CharacterSet,i=1,2,...,n,n≥0} 数据关系: R1={ai-1, ai | ai-1,ai∈D,i=2,...,n} 基本操作: StrAssing( T, chars ) : chars是字符串常量,生成一个值等于chars的串T StrCopy( T, S ) :串S存在,由串S复制得串T StrEmpty( S ) :如果串S为空,返回TRUE,否则返回FALSE StrCompare(S, T) : 若ST 返回0;若S=T 返回=0;若ST 返回0; StrLength( S ) :串S存在,返回S中元素的个数,称为串的长度more第8页/共40页串的基本操作Concat( T, S1,S2 ) : 用T返回S1和S2联接而成的新串SubString( Sub,S,pos,len ) : 用Sub返回串S的第pos个字符起长度为len的子串Index( S, T, pos ) : 如果在主串S中存在和串T值相同的子串,则返回它在主串S中第pos个字符之后第一次出现的位置,否则返回0Replace( S,T,V ) : 用V替换主串S中出现的所有与T相等的不重叠的子串StrInsert( S,pos,T ) : 在串S的第pos个字符之前插入串TStrDelete( S,pos,len ) : 在串S中删除第pos个
原创力文档


文档评论(0)