幻灯片课件--第4章串.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文档。上传文档
查看更多
第 4 章 串 ;4.1 串的逻辑结构;*; 零个字符的串称为空串 (null string),它的长度为零。为了清楚起见,以后我们用 “?” 来表示空串。;*; 如果在程序设计语言中,串只是作为输入或者输出的常量出现,则只需要存储此串的串值,即字符序列即可。但是在多数非数值处理的程序中,串也以变量的形式出现。串有 3 种机内表示方法。; 串的定长顺序存储表示类似于线性表的顺序存储结构,用一组地址连续的存储单元存储串值的字符序列。在串的定长顺序存储结构中,按照予定义的大小,为每个定长的串变量分配一个固定长度的存储区,则可以用定长数组描述。; 1. 定长顺序存储表示; (1) 串联接 StrCat(SString *s,SString t);s.len+t.len≤MAXSTRLEN 得到的 串是正确的结果。;strCat( SString *s, SString t) /* 用 s返回由 s和 t联接而成的新串。如果没有截断,则返回1,否则返回 0。*/; else if (s-len MAXLEN ) { // 截断t for (i-s-len; iMAXLEN; i++) s-ch[i]= t.ch [i-s-len]; s-len=MAXLEN; flag=0; }; (2) 求子串 SubString ( Sub, S, pos, len );SubString ( SString *Sub, SString S, int pos, int len) //用 Sub 返回串 S 的下标 pos 起长度为 len 的子串。;StrIndex (SString S, int pos, SString t) /* 求从主串s的下标pos起,串t第一次出现的位置, 成功返回位置序号,不成功返回-1*/; 堆分配存储表示的特点是,仍然以一组地址连续的存储单元存储串值的字符序列,但是它们的存储空间是在程序执行过程中动态分配而得的。;1. 堆分配存储表示;StrAssign ( HString *s , char *tral ) // 串常量 tral的值赋给堆串s */ { int len, i=0; if (s-ch!=NULL ) free (s-ch); //释放 s原有空间 While (tral [i]!=‘\0’) i++; //求 tral的长度 i len=i; if ( ! len) {s-ch = NULL; s- len = 0; } // 串 tral为空串 else { s-ch = ( char * ) malloc (len) ; if ( s-ch=NULL) return(0); for(i=0; ilen; i++) s-ch[i]=tral[i]; } return (1); } /* StrAssign*/ ;(2) 求串长;(3) 串比较;(4) 清空串;StrInsert ( HString *s, int pos, HString *t) /*在串 s的第 pos 个字符之前插入串 t。*/ { if ( pos 0|| pos s-len) return ERROR; if (t-len ) { // 如果 T 非空,则重新分配空间,插入t if ( ! (s-ch = ( char * ) realloc (s-ch, (s-len +t-.len )) return (FALSE); //存储分配失败 for ( i = s-len-1; i = pos-1; i-- ) /*为插入 T 而腾出位置*/ s-ch[ i+t-len ] = s-ch[ i ]; for(i=pos-1;ipos+t-len-1;i++) s-ch[i]=t-ch[i-pos+1] // 插入 T s-len + =t-len; //更新串

文档评论(0)

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

1亿VIP精品文档

相关文档