第四章节串-1.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第四章节串-1

第四章 串;4.1 串类型的定义;注意:空串和空白串的不同,例如‘ ’和‘’分别表示长度为1的空白串和长度为0的空串。 子串(substring):串中任意个连续字符组成的子序列称为该串的子串,包含子串的串相应地称为主串。 子串的序号:将子串在主串中首次出现时的该子串的首字符对应在主串中的序号,称为子串在主串中的序号(或位置)。 ; 例如,假设a、b、c、d为如下的4个串: 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。 ; 特别地,空串是任意串的子串,任意串是其自身的子串。 串相等:如果两个串的串值相等(相同),称这两个串相等。换言之,只有当两个串的长度相等,且各个对应位置的字符都相同时才相等。 通常在程序中使用的串可分为两种:串变量和串常量。 串常量和整常数、实常数一样,在程序中只能被引用但不能不能改变其值,即只能读不能写。 串变量和其它类型的变量一样,其值是可以改变。;4.1.2 串的抽象数据类型定义 ;;串赋值StrAssign、串比较StrCompare、求串长StrLength、串联接Concat以及求子串SubString这5种操作是串的最小操作子集,这些操作不可能利用其他串操作实现,其他操作可以通过这5种基本操作实现。 例如:定位函数Index可以通过 这5种操作实现;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; } } };4.2 串的存储表示和实现;C语言补充: char c1; 单个字符 char *c2; 指向字符的指针 c1=‘a’; c2=“abcd” ; char c3[10]; char c4[]=“abcd”; c3 = “abcd”? c4[1] = ‘f’? ; char c5[5]=“abcd”; char *c6=“abcd”; c5[1]=‘f’; c5[2]=c6[0]; ;4.2.1 串的定长顺序存储表示;; 求串长度 int StrLength(SString S){ /* 返回串的元素个数 */ return S[0]; };串的赋值 Status StrAssign(SString T,unsigned char *chars){ /* 生成一个其值等于chars的串T */ int i; if(strlen(chars)MAXSTRLEN) return ERROR; else{ T[0]=strlen(chars); for(i=1;i=T[0];i++) T[i]=*(chars+i-1); return OK; } };串的连接操作(未被截断) S1 S2 T;未被截断;if(S1[0]+S2[0]=MAXSTRLEN){ /* 未截断 */ for(i=1;i=S1[0];i++) T[i]=S1[i]; for(i=1;i=S2[0];i++) T[S1[0]+i]=S2[i]; T[0]=S1[0]+S2[0]; return TRUE; };串的连接操作(被截断) S1 S2 T;S2被截断; else if(S1[0]MAXSTRLEN){ /* 截断S2 */ for(i=1;i=S1[0];i++) T[i]=S1[i]; for(i=1;i=MAXSTRLEN-S1[0];i++) T[S1[0]+i]=S2[i]; T[0]=MAXSTRLEN; return FALSE; } };S2被全部截去;else{ //S2被全部截去 for(i=1;i=S1[0];i++) T[i]=S1[i]; T[0]=MAXSTRLEN; };程序如下 Status Concat(SString T,SString S1,SString S2){ /* 用T返回S1和S2联接而成的新串。若未截断, 则返回TRUE,否则FALSE */ int i; if

文档评论(0)

ctuorn0371 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档