网站大量收购闲置独家精品文档,联系QQ:2885784924

4.1 串的抽象数据类型的定义.ppt

  1. 1、本文档共57页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Sub.ch = (char *)malloc(len*sizeof(char)); Sub.ch[0..len-1] = S[pos-1..pos+len-2]; Sub.length = len; 三、串的块链存储表示 也可用链表来存储串值,由于串的数据元素是一个字符,它只有 8 位二进制数,因此用链表存储时,通常一个结点中存放的不是一个字符,而是一个子串。 存储密度 = 数据元素所占存储位 实际分配的存储位 #define CHUNKSIZE 80 // 可由用户定义的块大小 typedef struct Chunk { // 结点结构 char ch[CUNKSIZE]; struct Chunk *next; } Chunk; typedef struct { // 串的链表结构 Chunk *head, *tail; // 串的头和尾指针 int curlen; // 串的当前长度 } LString; StrAssign (T, chars) 初始条件:chars 是字符串常量。 操作结果:把 chars 赋为 T 的值。 StrCopy (T, S) 初始条件:串 S 存在。 操作结果:由串 S 复制得串 T。 DestroyString (S) 初始条件:串 S 存在。 操作结果:串 S 被销毁。 StrEmpty (S) 初始条件:串S存在。 操作结果:若 S 为空串,则返回TRUE, 否则返回 FALSE。 ?? 表示空串,空串的长度为零。 StrCompare (S, T) 初始条件:串 S 和 T 存在。 操作结果:若S ? T,则返回值 ? 0; 若S ? T,则返回值 ? 0; 若S ? T,则返回值 ? 0。 例如:StrCompare(?data?, ?state?) 0 StrCompare(?cat?, ?case?) 0 StrLength (S) 初始条件:串 S 存在。 操作结果:返回 S 的元素个数, 称为串的长度。 Concat (T, S1, S2) 初始条件:串 S1 和 S2 存在。 操作结果:用 T 返回由 S1 和 S2 联接而成的新串。 例如: Concate( T, ?man?, ?kind?) 求得 T = ?mankind? SubString (Sub, S, pos, len) 初始条件: 串 S 存在,1≤pos≤StrLength(S) 且0≤len≤StrLength(S)-pos+1。 操作结果: 用 Sub 返回串 S 的第 pos 个字符起 长度为 len 的子串。 例如: SubString( sub, ?commander?, 4, 3) 求得 sub = ?man? ; SubString( sub, ?commander?, 1, 9) 求得 sub = ?commander?; SubString( sub, ?commander?, 9, 1) 求得 sub = ?r?; 子串为“串” 中的一个字符子序列 SubString(sub, ?commander?, 4, 7) sub = ? SubString(sub, ?beijing?, 7, 2) = ? sub = ? SubString(?student?, 5, 0) = ?? 起始位置和子串长度之间存在约束关系 长度为 0 的子串为“合法”串 Index (S, T, pos) 初始条件:串S和T存在,T是非空串, 1≤pos≤StrLength(S)。 操作结果: 若主串 S 中存在和串 T 值相同 的子串, 则返回它在主串 S 中第pos个 字符之后第一次出现的位置

文档评论(0)

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

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

1亿VIP精品文档

相关文档