41 串的抽象数据类型的定义.pptVIP

  1. 1、本文档共51页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
41 串的抽象数据类型的定义.ppt

void StrInsert (Hstring S, int pos, HString T) { // 1≤pos≤StrLength(S)+1。在串 S 的 // 第 pos 个字符之前插入串 T slen=S.length; tlen=T.length; // 取得S和T的串长 if(pos 1||pos slen+1) return; // 插入位置不合法 S1.ch = new char[slen] ; // S1作为辅助串 S1.ch[0..slen-1] = S.ch[0..slen-1]; // 暂存 S if (tlen0) // T 非空,则为S重新分配空间并插入T { } } // StrInsert _HSq …… S.ch = new char[slen + tlen ]; // 为 S 重新分配空间 for ( i=0, k=0; ipos-1; i++) S.ch[k++] = S1.ch[i]; // 保留插入位置之前的子串 for ( i=0; itlen; i++) S.ch[k++] = T.ch[i]; // 插入T for ( i=pos; islen; i++ ) S.ch[k++] = S1.ch[i]; // 复制插入位置之后的子串 S.length = slen+tlen; delete S1.ch; 三、串的块链存储表示 也可用链表来存储串值,由于串的数据元素是一个字符,它只有 8 位二进制数,因此用链表存储时,通常一个结点中存放的不是一个字符,而是一个子串。 存储密度 = 数据元素所占存储位 实际分配的存储位 #define CHUNKSIZE 80 // 可由用户定义的块大小 typedef struct Chunk { // 结点结构 char ch[CUNKSIZE]; struct Chunk *next; } Chunk; typedef struct { // 串的链表结构 Chunk *head, *tail; // 串的头和尾指针 int curlen; // 串的当前长度 } LString; 例如: 在编辑系统中,整个文本编辑区可以看成是一个串,每一行是一个子串,构成一个结点。即: 同一行的串用定长结构(80个字符), 行和行之间用指针相联接。 实际应用时,可以根据问题所需来设置结点的大小。 这是串的一种重要操作,很多软件,若有“编辑”菜单项的话,则其中必有“查找”子菜单项。 4.3 串的模式匹配算法 * * 4.1 串的抽象数据类型的定义 4.2 串的表示和实现 4.3 串的模式匹配算法 字符串: 简称串,是特殊的线性表,其特殊性主要在于表中的每个元素是一个字符,以及由此而要求的一些特殊操作。 长度:一个串中包括的字符个数。长度为零的串称为空串。 4.1 串的抽象数据类型的定义 子串:字符串s1中任意个连续的字符组成的子序列s2被称为是s1的子串,而称s1是s2的主串。 位置:子串在主串中的位置是以子串的第一个字符在主串中的字符序号(下标+1)。 相等:两个串的长度相等,并且对应位置上的字符都 相等。 串的数据对象约束为字符集。 线性表的基本操作大多以“单个元素”为操作对象,而串的基本操作通常以“串的整体”作为操作对象。 串的逻辑结构和线性表的区别: 串的抽象数据类型的定义如下: ADT String { 数据对象: D={ ai |ai∈CharacterSet, i=1,2,...,n, n≥0 } 数据关系: R1={ ai-1, ai | ai-1, ai ∈D,i=2,...,n } 串是有限长的字符序列,由一对双引号相括,如: ? a string ? 基本操作: …… StrAssign (T, chars) StrCopy (T, S) DestroyString(S) StrEmpty (S) StrCompare (S, T) StrLength(S) Concat (T, S1, S2) 基本操作:

文档评论(0)

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

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

1亿VIP精品文档

相关文档