DataS4.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文档。上传文档
查看更多
DataS4

第4章 串 串:一种线性结构,数据对象是字符集 基本操作:不是以“单个元素”作为操作对象,而是以“串的整体”作为操作对象。 如:查找子串、求子串、串连接、插入子串、删除子串等。 4.1 串的类型定义 串是字符串的简称。它是一种在数据元素的组成上具有一定约束条件的线性表,即要求组成线性表的所有数据元素都是字符。 串:串是一个有穷字符序列。 串的表示 串一般记作: s=‘a1a2...an’ (n?0) 其中: s是串的名称,用单引号(‘’)括起来的字符序列是串的值; ai可以是字母、数字或其他字符; 串中字符的数目n被称作串的长度。 当n=0时,串中没有任何字符,其串的长度为0,通常被称为空串。 字符串中的几个概念 空格串:由空格字符组成的串。长度非空。 子串和主串:字符串s1中任意个连续的字符组成的子序列s2被称为是s1的子串,而称s1是s2的主串。 子串的位置:子串在主串中第一次出现的第一个字符的位置。 相等:两个串的长度相等,并且对应位置上的字符都相等。 串的抽象数据类型 ADT STRING { 数据对象: D={ai|ai∈Elemset,i=1,2,…n,n=0} 数据关系: R={ai-1,ai|ai-1,ai ?D,i=2,3,…n} 基本操作: 串赋值:StringAssign(S,T) 判串相等:StringEqual(S,T) 求串长:StringLength(S) 串连接:StringConcat(S,T) 求子串:SubString(S,start,length) 子串定位:Index(S,T) 置换:Replace(S,T,V) 插入子串:StringInsert(S,start,T) 删除子串:StringDelete(S,start,length) } ADT STRING 串运算举例 串运算的例子: 子串定位(index)的实现 int index(String S, String T) {∥若主串S第i个字符之后存在与T相等的子串,则返回T串在S中的位置,否则返回0 n=StringLength(S); m=StringLength(T); i=1; while(i=n-m+1) ∥当i加上T的长度超过串S的长度结束 {StringAssign(sub,SubString(S,i,m)); if(StringEqual(sub,T)==0) return i; else ++i; }∥while return 0; ∥S中不存在与T相等的子串 }∥index 4.2 串的表示和实现 串的顺序存储结构 :用一组连续的存储单元依次存储串中的字符序列。 字符数组表示法 事先定义字符串的最大长度 以一个特殊的字符(’\0’)作为字符串的结束标志 链式表示 每个结点一个字符的单链表表示法 每个结点多个字符的块链存储表示 4.2.1 顺序表示 顺序串的定义(1) #define MAXNUM /* 串允许的最大字符个数 */ typedef struct { char c[MAXNUM]; int n; /* 串的长度,n?MAXNUM */ } SeqString; 例 顺序串的定义(2) ——堆分配存储 typedef struct { char *str; int length; } STRING; 算法4.1 创建空顺序串 STRING STRINGInit () { STRING *s; s-str = (char*)malloc(sizeof(char)); s-str[0]=‘\0’; s-length = 0; return s; } 算法4.2 串的赋值 int StringAssign(STRING *s,*t ) { if (s-str) free(s-str); len=t-length; s-length=len; if(len==0) {s-str=(char*)malloc(sizeof(char)); s-str[0]=‘\0’; } else {s-str =(char*)malloc((len+1)*sizeof(char)); if (s-str==NULL) return ERROR; for (i=0;i=len;i++) s-str[i]=t-str[i]; }

文档评论(0)

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

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

1亿VIP精品文档

相关文档