清华大学数据结构课件3串.pptVIP

  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文档。上传文档
查看更多
清华大学数据结构课件3串

Spring 2001 Data Structure Lecture notes Fall 2000 CS 315 Lecture notes Data Structures and Algorithms Lecture notes for String Jiang Lihong Shanghai Jiaotong University Main Topic 4.1 串的基本概念 4.2 串的运算及其实现 4.3 串的存储结构 4.4 串的模式匹配 4.1 串的基本概念 串(或字符串),是由零个或多个字符组成的有限序列。一般记为: s=a1a2...an(n=0) 串的例子 S1=“ab123” //长度为5的串 S2=“100” //长度为3的串 S3= //含两个空格字符的串长度为2 S4=“” //空串长度为0 a=BEI,b=JING,c=BEIJING,d=BEI JING 串长分别为3,4,7,8,且a,b都是c,d的子串。 称两个串是相等的,当且仅当这两个串的值相等。 a=` `称为空白串。它的长度为1。由于空白串本身是一个字符,因此它可以出现在其它字符中间,例如“bei jing”。为清楚起见,下文中的空白字符用“σ”表示。 a=``称为空串。它的长度为0。空串中无任何字符 4.2 串的运算及实现 串的抽象数据类型的定义: ADT String{ 数据对象:D={ai|ai(-CharacterSet,i=1,2,...,n,n=0} 数据关系:R1={ai-1,ai|ai-1,ai(-D,i=2,...,n} 基本操作: StrAssign(T,chars) ////////// chars是字符常量。生成一个其值等于chars的串T。 StrCopy(T,S) 串S存在则由串S复制得串T StrEmpty(S) 串S存在则若S为空串,返回真否则返回假 StrCompare(S,T) /////////// 串S和T存在,若ST,则返回值大于0,若S=T,则返回值=0,若ST,则返回值0 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=StrLength(S)且0=len=StrLength(S)-pos+1 Index(S,T,pos) 串S和T存在,T是非空,1=pos=StrLength(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=StrLength(S)+1,在串S的第pos个字符之前插入串T StrDelete(S,pos,len) 串S存在,1=pos=StrLength(S)-len+1从串中删除第pos个字符起长度为len的子串 DestroyString(S) 串S存在,则串S被销毁 }ADT String 4.3串的存储结构(一) 串的定长存储 用一组地址连续的存储单元存储串值的字符序列. #define MAXSTRLEN 255 typedef unsigned char SString[MAXSTRLEN+1] //0号单元存放串长 超过予定义长度的串值则被舍去 串长可用下标为0的数组元素存储,也可在串值后设特殊标记 串联接的实现Concat(T,S1,S2) 假设S1,S2和T都是SString型的串变量,且串T是由串S1联结串S2得到的,即串T的值的前一段和串S1的值相等,串T的值的后一段和串S2的值相等,则只要进行相应的串值复制操作即可,对超长部分实施截断操作 以下是串联接可能出现的三种情况: S1,S2串长和小于最大值 S1,S2串长和超过最大串长 S1串长已等于最大串长 Status Concat(SString T,SString S1,SString S2){ if(S1[0]+S2[0]=MAXSTRLEN){ 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; } else if(S1[0]MAXSTRSIZE

文档评论(0)

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

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

1亿VIP精品文档

相关文档