第4章串计算机上的非数值处理的对象基本上是字符串数据。.pptVIP

第4章串计算机上的非数值处理的对象基本上是字符串数据。.ppt

  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文档。上传文档
查看更多
第4章串计算机上的非数值处理的对象基本上是字符串数据。

* 第4章 串 计算机上的非数值处理的对象基本上是字符串数据。 早期:常量 发展:变量 实际困难及对策: 硬件反映数值计算,要有效地实现字符串的处理, 就必须根据具体情况使用合适的存储结构。 本章讨论:一些基本的串处理操作 几种不同的存储结构。 4.1 串类型的定义 一.概念及术语: 串: 零个或多个字符组成的有限序列。 一般记为:s=’a1a2a3…an’(n=0), 串名 串的值; ai可以是字母、数字、或其他字符; 注:单引号本身不属于串,其作用是为了区分字符串与变量名或数值常量。(举例说明) 串的长度: 串中字符的数目称为串的长度。 空串: 长度为零的串称为空串。 子串: 串中任意个连续的字符组成的子序列称为该串的子串。 主串: 包含子串的串相应的称为主串。 字符在串中的位置: 称字符在序列中的序号为该字符在串中的位置。 子串在主串中的位置: 以子串的第一个字符在主串中的位置来表示。 (举例说明) 两个串相等: 当且仅当两个串的值相等时,称为这两个串是相等的。 空格串: 由一个或多个空格组成的串称为空格串。 注: “空格串”不等同于“空串”。用符号“Φ”来表示“空串”。 *串的逻辑结构和线性表极为相似 *串的数据对象约束为字符集 *串的基本操作和线性表有很大差别: 在线性表的基本操作中,大多以“单个元素”作为操作对象; 在串的基本操作中,通常以“串的整体”作为操作对象。 二.串的抽象数据类型定义: 算法4.1 :T为非空串。若主串S中第pos个字符后存在与T相等的子串,则返回第一个这样的子串在S中的位置,否则返回0。 int Index(String S,String T,int pos){ if(pos0){ n=StrLength(S); m=StrLength(T); i=pos; while(i=n-m+1){ SubString(sub,S,i,m); if(StrCompare(sub,T)!=0) ++i; else return i; }//while }//if return 0; }//Index 4.2 串的表示和实现 一.定长顺序存储表示: 1.定长顺序存储表示: 即:用一组地址连续的存储单元存储串值得字符序列。 在串的定长顺序存储结构中,按照预定义的大小,为每个定义的串变量分配一个固定长度的存储区。 2.用定长数组描述: #define MAXSTRLEN 255 typedef unsigned char SString[MAXSTRLEN+1] ; 串的实际长度可在这予定义长度的范围内随意,超过予定义长度的串值则被舍去,称之为“截断”。 对串长有两种表示方法: 1.以下标为0的数组分量存放串的实际长度 2.在串值后面加一个不计人串长的结束标记字符 如在有的c语言中以“\0”表示串值的终结。此时的串长为隐含值,显然不便于进行某些串操作。 3.串操作的实现(部分): (1).串联接 T=S1+S2(算法4.2) Status Concat(SString T,SString S1,SString S2){ switch{ case S1[0]+S2[0]=MAXSIZE : T[1. .S1[0]]=S1[1. .S1[0]]; T[S1[0]+1. .S1[0]+S2[0]]=S2[1. .S2[0]]; T[0]=S1[0]+S2[0]; uncut=TRUE; break; case S1[0]MSXSIZE: T[1. .S1[0]]=S1[1. .S1[0]]; T[S1[0]+1. .MAXSIZE]=S2[1. .MAXSIZE-S1[0]]; T[0]=MAXSIZE; uncut=FALSE;break; case S1[0]==MAXSTRLEN : T[0. .MAXSTRLEN]=S1[0. .MAXSTRLEN]; uncut=FALSE; } return uncut; }//Concat (2).求子串 算法4.3 Status SubString(SString Sub,SString S, int pos, int len){ if(pos1||posS[0]||len0||lenS[0]-pos+1) return ERROR; Sub[1. .l

文档评论(0)

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

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

1亿VIP精品文档

相关文档