- 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.1 串类型的定义
一、串和基本概念
串是零个或多个字符组成的有限序列。一般记作S=‘a1a2a3…an’,S 是串名,单引号括起来的字符序列是串值;ai(1≦i≦n)可以是字母、数字或其它字符;串中所包含的字符个数称为该串的长度。长度为零的串称为空串,它不包含任何字符。
通常将仅由一个或多个空格组成的串称为空白串。注意:空串和空白串的不同,例如“ ”和“”分别表示长度为1的空白串和长度为0的空串。;串中任意个连续字符组成的子序列称为该串的子串,包含子串的串相应地称为主串。通常将子串在主串中首次出现时的该子串的首字符对应的主串中的序号,定义为子串在主串中的序号(或位置)。例如:a,b,c,d 四个字符串为
a=‘BEI’ , b=‘JING’
c=‘BEIJING’ , d=‘BEI JING’
它们的长度分别为 3,4,7,8;a和b都是c和d的子串。a在c和d中的位置都是1,b在c中的位置是4,而b在d中的位置是5。
注意:单引号是为字符串区别于变量名而设,它不是字符串的内容
称两个串是相等的 当且仅当这两个串每个字符对应相等;二、串的抽象数据定义
串的抽象数据类型定义见书P71
ADT String {
数据对象:D = {ai | ai∈CharacteSet,i=1,2,...n, n=0}
数据关系: R1= {< ai-1., ai>| ai∈D, i=2,...n}。
基本操作:
StrAssign(T,chars); StrCopy(T,S);
StrEmpty (S); StrCompare(S,T);
StrLength(S); ClearString(S);
Concat(T,S1,S2); Substring(Sub,S,pos,len);
Index(S,T,pos); Replace(S,T,V);
StrInsert(S,pos,T); StrDelete(S,pos,len);
DestroyString(S)
}ADT String;基本操作的功能说明;StrLength(S)
初始条件: 字符串S已经存在。
操作结果: 返回串S元素个数,称为串的长度。
ClearString(S)
初始条件: 字符串S已经存在。
操作结果: 将串S清为空串。
Concat(T,S1,S2)
初始条件: 字符串S1,S2已经存在。
操作结果: 用T返回由串S1和S2联结而成的新串。
Substring(Sub,S,pos,len)
初始条件: 串S存在,1=pos=S的长度,0=len=S的长度-pos+1。
操作结果: 用Sub返回串S的第pos个字符起长度为len的子串。;Index(S,T,pos)
初始条件: 串S和T存在,T是非空串,1=pos=S的长度。
操作结果: 若主串S中存在和串T相同的子串,则返回它在主串 S中第pos个字符之后第一次出现的位置;否则返回0。
Replace(S,T,V)
初始条件: 字符串S,T,V已经存在,T是非空串。
操作结果: 用V替换主串S中出现的所有与T相等的不重叠的子串。
StrInsert(S,pos,T)
初始条件: 字符串S,T存在,1=pos=S的长度+1。
操作结果: 在串S的第pos个字符之前插入串T。
StrDelete(S,pos,len)
初始条件: 串S存在,1=pos=S的长度-len+1。
操作结果: 从串S中删除第pos个字符起长度为len的子串。
DestroyString(S): 把存在的串S销毁。;上述13种基本操作中,下面5种操作构成最小操作子集:
串赋值 StrAssign;
串比较 StrCompare;
求串长 StrLength;
串联结 Concat;
求子串 Substring;
其它操作可以用其实现
例如定位函数
Index(S,T,pos)
的算法如右:;4.2 串的表示和实现;S1;1.串联结 Concat(T,S1,S2)的算法;2.求子串SubString(Sub,S,pos,len)的算法;4.2.2 堆分配存储表示
也是用一组连续的存储单元存储串值的字符序列.
但存储空间是在程序执行过程中动态分配得到的.
在C语言中,用字符“\0”表示串的终结,“\0”不计入串长.
;串插入StrInsert(S,pos,T)的算法;Hstring串类基本操作的算法描述
Status StrAssign(HString T,char *chars)
{ // 生成一个其值等于串常量chars的串T
if(T.ch) fre
文档评论(0)