数据结构-串和数组.pptVIP

  1. 1、本文档共63页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构-串和数组

3.6 其他线性结构;串(String)是由零个或多个字符组成的有限序列。一般记为: S=a1 a2 ... an (n≥0) 其中,S是串的名,用单引号括起来的字符序列是串的值;ai(1≤i≤n)可以是字母、数字或其它字符,串中字符的数目n称为串的长度。 n=0的串称为空串(null string)。;串中任意个连续的字符组成的子序列称为该串的子串。 包含子串的串相应地称为主串。 通常称字符在序列中的序号为该字符在串中的位置。 子串在主串中的位置则以子串的第一个字符在主串中的位置来表示。 当两个串的长度相等,并且各个对应位置上的字符都相等时,称两个串相等。;例:串名为A、B、C、D的四个串如下: A=very good; 长度为9,是D的主串; B= ; 长度为3; C=; 长度为0(空串); D=good; 长度为4,是A的子串。 D在A中的位置是6。; ;(3) 删除操作:StrDelete(S,pos,len) 初始条件:字符串S存在, 1≤pos ≤StrLength(S)-len+1; 操作结果:从字符串S中删除第pos个字符起长度为len的子串。 (4) 复制操作:StrCopy(S,T) 初始条件:字符串S存在; 操作结果:将字符串S的内容复制到串T。;(5) 判空操作:StrEmpty(S) 初始条件:字符串S存在; 操作结果:若S为空串,则返回TRUE,否则返回FALSE。 (6) 比较操作:StrCompare(S,T) 初始条件:字符串S、T存在; 操作结果:若ST,则返回值0;若S=T,则返回值=0;若ST,则返回值0 。;(7) 求串长操作:StrLength(S) 初始条件:字符串S存在; 操作结果:返回字符串S的长度,即串S中字符的个数。 (8) 置空操作:StrClear(S) 初始条件:字符串S存在; 操作结果:将字符串S清为空串。;(9) 联接操作:StrCat(S,T) 初始条件:字符串S、T存在; 操作结果:将字符串T的值连接在S的后面。 (10) 求子串操作:SubString(Sub,S,pos,len) 初始条件:字符串S存在, 1≤pos≤StrLength(S) 且1≤len≤StrLength(S)-pos+1; 操作结果:用Sub返回字符串S的第pos个字符开始长度为len的子串。;(11) 定位操作:StrIndex(S,pos,T) 初始条件:字符串S、T存在,T非空, 1≤pos≤StrLength(S); 操作结果:若字符串S中存在与T相等的子串,则返回它在字符串S中第pos个字符之后第一次出现的位置;否则返回0。 (7) 置换操作:StrReplace(S,T,V) 初始条件:字符串S、T、V存在,T非空; 操作结果:用V替换字符串S中出现的所有与T相等的不重叠的子串。;(13) 释放操作:StrDestroy(S) 初始条件:字符串S存在; 操作结果:销毁字符串S。;串的两种基本存储结构:顺序存储结构和链式存储结构。 定长顺序串:当串的长度基本固定时,主要考虑采用顺序存储结构实现。其C语言描述如下: #define Maxlen 20 //串的最大长度 typedef struct { //串的定义 char ch[Maxlen]; int len; //串的长度 } Sstring;;在进行串的插入时: 插入位置pos将原字符串划分为两部分(分别假设为A和B,长度分别为LA和LB); 待插入字符串假设为C,其长度为LC; 插入过程可能出现下列三种情况: 1) 插入后串的总长度为LA+LB+LC ≤Maxlen; 2) 插入后串的总长度Maxlen,且pos+LC Maxlen; 3) 插入后串的总长度Maxlen,且pos+LCMaxlen;;/* 在串s中序号为pos的字符之前插入串t */ int StrInsert(SString *s, int pos, SString t) { int i; if(pos0||poss-len) return(0); /* 插入位置不合法 */ if(s-len+t.len=Maxlen) { /* 插入后串长≤Maxlen */ for(i=s-len+t.len-1; i=t.len+pos; i--) s-ch[i]=s-ch[i-t.len]; for(i=0; it.len; i++) s-c

文档评论(0)

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

分享好文档!

1亿VIP精品文档

相关文档