[工学]第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章 字符串

空串: 长度为0的字符串; 空格串: 由空格字符组成的字符串,长度1 主串: 包含该子串的字符串; 字符的位置: 从1开始 子串的位置: 该子串第一个字符的位置 6)子串定位StrIndex( s, t) 返回t首次在s中出现的位置,若不存在则返回0 7) 串插入StrInsert(s,i,t) 将串t插入到串s的第i字符的位置上 8)串删除StrDelete(s,i,len) 从串S中删除第i个字符起长度为len的子串 9)串替换StrRep(s,t,r) 用r替换s中出现的所有与串t相等的不重叠的子串 串的链式存储结构 由于串的特殊性——结构中的每个数据元素是一个字符,则使用链表存储串值时,每个结点可以存放一个字符,也可以存放多个字符,结点中存放字符的个数称为“结点大小”。 如图为结点大小为3和1的链表 串的链式结构类型可定义如下: const nodesize=80 Typedef struct node { char data[nodesize] ; /*一个结点存多个字符*/ struct node *next ; /*链指针*/ } linkstring ; 或Typedef struct node { char data ; /*一个结点存一个字符*/ struct node *next ; } linkstring ; 链式存储结构的插入串操作 将串s2插入到串s1中的第i个字符开始的位置上(第i个结点之后)*/ linkstring *StrInsert(linkstring *s1, linkstring *s2,int i) { int k ; linkstring *p ,*q ; p=s1 ; k=1 ; while (ki p!=NULL) { p==p-next ; k++ ; } if (p==NULL) printf(“overflow ! \n”) ; else { q=s2 ; while (q!=NULL) q=q-next ; q-next=p-next ; p-next = s2-next ;free(s2); } return (s1) ; } 模式匹配: 设s和t是给定的两个串,在主串s中查找子串t的过程称为模式匹配,其中t也称为模式。 1.简单的模式匹配算法 简单模式匹配算法 int StrIndex (SeqString *S, SeqString *T ) { int i, j ; i=1 ; j=1 ;   /注从字符数组的第0个字符开始比 while(iS-len jT-len ) /*字符比较成功,继续比较后续字符*/ if (S-str[ i ] == T-str[ j ]) {i++;j++ ;} /*字符比较不成功,i指针回溯,并从T的第一个字符起重新比较*/ else { i=i-j+2;j=1 }; if (jT-len ) return (i-T-len+1 ); /*匹配成功*/ else return (0); /*匹配失败*/ } 有一个问题,在某趟匹配过程中,若出现字符比较不相等,则指向主串的指针需要回溯,需要从模式串的第一个字符重新开始比较,这样,之前成功的比较不在被保留,因此,简单的模式匹配算法没有利用已经成功比较的工作。 *2.改进后的模式匹配算法(KMP算法) 该算法相较于简单模式匹配的改进之处在于:每当一趟匹配过程出现字符比较不等时,指向主串的指针i不回溯,而是利用已经得到的“部分匹配”结果将模式串向右滑动一段距离后继续进行比较。该算法可以在O(m+n)的数量级上完成串的模式匹配。 * * 第4章 串 4.3 模式匹配 4.1 字符串的基本概念 4. 2 串的存储结构 (1) 串的基本概念 串(string)是由零个或多个任意字符组成的字符序列, 又称为字符串(character string),一般记为: s=〝a1 a2 a3 … an〞 下面也是一些串的例子: (1)s = ’’LIMING’’ (2)s = ’’PEJING UNIUERCITY” (3)s = ’’DATA STRUCTURE” (4)s = ’’” (5)s = ’’ ” 说明: 1)其中s是串名,用双引号括起来的字符序列是串的值。 2)ai(1=

文档评论(0)

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

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

1亿VIP精品文档

相关文档