- 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章 串 Status StrAssign (T, chars){//生成一个其值等于串值chars的串T char *c; if(T.ch) free(T.ch);//释放T的原有空间 for(i=0,c=chars; c; i++;c++);//求chars的长度i if(i==0){T.ch=NULL;T.length=0;} else{ if((T.ch=(char *)malloc(i*sizeof(char)))==NULL) exit(OVERFLOW); T.ch[0..i-1]=chars[0..i-1];// “字符序列的复制” T.length=i; }return OK; }//StrAssign 2、堆分配存储表示 又如串插入操作StrInsert(S,pos,T)的实现算法是,为串S重新分配大小等于串S和串T长度之和的存储空间,然后进行串值复制。 2、堆分配存储表示 数据结构与算法 长江师范学院数计院heqinglin@ * 4.1 串类型的定义 4.2 串的表示和实现 1 定长顺序存储表示 2 堆分配存储表示 3 串的块链存储表示 4.3 串的模式匹配算法 4.4 串操作应用举例 一、串和基本概念 4.1 串类型的定义 1、串(String) 串是零个或多个字符组成的有限序列。一般记作S= ’a1a2a3…an’,其中S 是串名,单引号括起来的字符序列是串值;ai(1≦i≦n)可以是字母、数字或其它字符;串中所包含的字符个数称为串的长度。 长度为零的串称为空串(NULL String),它不包含任何字符。 注意:空串和空格串的不同,例如‘ ’和‘’分别表示长度为1的空格串和长度为0的空串。 通常将仅由一个或多个空格组成的串称为空格串(Blank String)。 串中任意个连续字符组成的子序列称为该串的子串,包含子串的串相应地称为主串。字符在序列中的位置序号为该字符在串中的位置。 一、串和基本概念 子串在主串中的位置:子串的第一个字符在主串中的位置,如果子串多次出现,则为第一次的位置。 例如,设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,在d中的位置则是5。 特别地,空串是任意串的子串,任意串是其自身的子串。 当且仅当两个串的值相等,称两个串是相等。也就是说,只有两个串的长度相等,并且各对应位置上的字符都相等时才相等。例如上例中的串a、b、c和d彼此都不是相等。 一、串和基本概念 一、串和基本概念 串的逻辑结构和线性表极为相似,区别仅在于串的数据对象约束为字符集。然而,串的基本操作和线性表有很大差别。 在线性表中的基本操作中,大多数以“单个元素”作为操作对象。例如在线性表中查找某个元素、求取某个元素、在某个位置上插入一个元素和删除一个元素等; 而在串的基本操作中,通常以“串的整体”作为操作对象,例如在串中查找某个子串、求取一个子串、在串的某个位置上插入一个子串以及删除一个子串等。 ADT String { D={ ai |ai∈CharacterSet,i=1,2,...,n, ≥0 } 数据关系: R1={ ai-1, ai | ai-1, ai ∈D, i=2,...,n } 二、串的抽象数据定义 基本操作: 1、StrAssign (T, chars)//串赋值 初始条件:chars 是字符串常量。 操作结果:把 chars 赋给串T 。 2、StrCopy (T, S)//串复制 初始条件:串 S 存在。 操作结果:由串S复制到串T。 数据对象: 3、StrCompare (S, T)//串比较 初始条件:串 S 和 T 存在。 操作结果:若S ? T,则返回值 ? 0; 若S ? T,则返回值 ? 0; 若S ? T,则返回值 ? 0。 二、串的抽象数据定义 4、StrLength (S) //求串长 初始条件:串 S 存在。 操作结果:返回 S 的元素个数, 称为串的长度。 5、Concat (T, S1, S2)//串连接 初始条件:串 S1 和 S2 存在。 操作结果:用 T 返回由 S1 和 S2 联接而成的新串。 二、串的抽象数据定义 6、 SubString (Sub, S, pos, len) 初始条件:串 S 存在,1≤pos≤StrLength(S) ,且 0≤len≤StrLength(S)-(pos-1)。 操作结果:用 Sub 返回串 S 的第 pos 个字符起长度为
您可能关注的文档
最近下载
- 冶金安全培训课件.pptx VIP
- Yamaha 雅马哈 乐器音响 MG10XU_MG10X_MG10 Owner's Manual 用户手册.pdf
- CANoe--快速入门教程.pdf VIP
- 示波表常用软件使用说明.pdf VIP
- 《数学广角—沏茶问题》说课稿.doc VIP
- 十年高考语文真题分项汇编专题06文言文阅读(人物传记类)原卷版+解析版.docx VIP
- (推荐!)2025北京中考真题语文试题及答案.pdf VIP
- 道德与法治一年级上册第二单元 校园生活真快乐 大单元整体学历案教案 教学设计附作业设计(基于新课标教学评一致性).docx VIP
- 儿童呕吐腹泻家庭护理ppt.pptx
- 2025北京中考真题语文试题及答案.doc VIP
文档评论(0)