数据结构第五章 串课件.ppt

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

第五章 串 ; ? 5.1 串的定义和基本运算 5.2 串的定长顺序存储 5.3 串的链式存储 5.4 串的堆分配存储;串是一种特殊的线性表,它的数据元素类型为字符型。串是由0个或多个任意个字符组成的有限序列。; 串中任意个连续的字符组成的子序列称为该串的子串。 包含子串的串相应地称为主串。;串的基本操作 ; 5.1 串的定义和基本运算 ? 5.2 串的定长顺序存储 5.3 串的链式存储 5.4 串的堆分配存储;串的存储——定长顺序存储;int StrLength (Str *S ) { return (S-len); };Str ConcatStr (Str *S, Str *T ) { int i; if(S-len+T-len=MAXLEN) printf(“两个串太长,溢出”); else { for (i=0; iT-len; i++ ) S-vec[S-len+i] = T-vec[i]; S-vec[S-len+i]=‘\0’; S-len=S-len+T-len; };Str SubStr (Str *S, int i, int len ) { //返回串S的第i个字符起长度为len的子串 Str Sub; int k; if (i1 || iS-len || len1 || i+lenS-len+1) Sub-len=0; else { for ( k=0; klen; k++ ) Sub-vec[k] = S-vec[i+k-1]; Sub-len=len; Sub-vec[len]=‘\0’; } return Sub; };int EqualStr (Str *S, Str *T ) { //相等返回0,ST返回负数,ST返回正数 int i=0; for(S-vec[i] T-vec[i] S-vec[i]==T-vec[i]; i++); return S-vec[i]-T-vec[i]; //ASCII码相减 };int InsStr (Str *S, int i, Str T ) { // 在串S中的第i个位置插入串T int k=0; if ( iS-len+1) return 0; //插入位置不合法 else { for (k=S-len-1; k=i-1; k-- ) S-vec[T-len+k] =S-vec[k] ; for (k=0; kT-len; k++ ) S-vec[i+k-1] =T-vec[k] ; S-len=S-len+T-len; S-vec[s-len]=‘\0’; return 1; } };int DelStr (Str *S, int i, int len ) { // 从串S中的第i个位置开始删除len个字符 int k=0; if (i1 || iS-len || len1 || i+lenS-len+1) return 0; //删除失败 else { for ( k=i+len-1; kS-len; k++;i++ ) S-vec[i] =S-vec[k]) ; S-len=S-len-T-len; return 1; } };串的模式匹配;int Index (SqString *S, SqString *T ) { //返回子串T在主串S中第一次出现的位置,如不存在返回-1 int i=0, j=0, k; while (iS-len jT-len) { if (S-vec[i]==T-vec[j]) { i++; j++; } else { i=i-j+1; j=0; } } if( j=T-len) k = i-T-len+1; else k=-1; return k; //返回找到的子串所在的位序 };时间复杂度分析; 5.1 串的类型定义 5.2 串的定长顺序存储 ? 5.3 串的链式存储 5.4 串的堆分配存储;串的存储——链式存储;串的存储密度; 5.1 串的类型定义 5.2 串的定长顺序存储 5.3 串的链式存储 ? 5.4 串的堆分配存储;typedef struct { char *ch; //若是非空串,则按串长分配存储

文档评论(0)

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

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档