数据结构第4章串.ppt

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

第四章 串(String) 4.1 串类型的定义 4.2 串的表示和实现 3.3 栈与递归的实现 3.4 队列 3.5 离散事件模拟 4.1 串类型的定义 4.1 串类型的定义 C中的字符串:由一对双引号括起的字符序列,如“abcd ef”。一般地,串是由零个或多个字符组成的有限序列。 相关概念:串的长度、空串、子串、主串、字符/子串在串/主串中的位置。 如:S=“Data Structure”,S为串名,“Data Structure”为串值,长度为14;“ata Str”为主串S的子串,它在S中的位置为2。 4.1 串类型的定义 称两个串是相等的,当且仅当这两个串的值相等。 空格串 vs. 空串? 是特殊的线性表 1)元素类型为字符; 2)操作对象:个体(字符)与整体(子串) 4.1 串类型的定义-ADT String ADT String 串的整体操作 赋值 StrAssign(S, “Data Structure”) 复制 StrCopy(T, S) // T=S, T为“Data Structure” 比较 StrCompare(S, T) 连接 Concat(T, “Data”, “Structure”) //T为“DataStructure” 取子串 SubString(sub, S, 2, 5) // sub为“ata S” 4.1 串类型的定义-ADT String ADT String 串的整体操作 子串在主串中的定位 Index(S, “a”, 3) // 4 子串置换 Replace(S, “a”, “b”) // S为“Dbtb Structure” 子串插入 StrInsert(S, 3, “aha”) // “Daahata Structure” 子串删除 StrDelete(S, 3, 5) // “Daructure” 4.1 串类型的定义 4.1 串类型的定义 4.1 串类型的定义-操作间的关系 串的最小操作子集 在上述抽象数据类型定义的13种操作中:串赋值StrAssign、串复制Strcopy、串比较StrCompare、求串长StrLength、串联接Concat以及求子串SubString等六种操作构成串类型的最小操作子集。 即:这些操作不可能利用其他串操作来实现, 反之,其他串操作(除串清除ClearString和串销毁DestroyString外)可在这个最小操作子集上实现。 4.1 串类型的定义 4.1 串类型的定义 4.2 串的表示和实现-定长顺序存储 类型定义 #define MAXSTRLEN 255 // 用户可在255以内定义最大串长 typedef unsigned char SString[MAXSTRLEN+1]; 约定:1) 下标为0的分量存放串的长度。 2)串值后加入一个不计入串长的结束标记字符,如C语言中的’\0’ 。 评价 串长过小,则串空间浪费较大 。 串长超出最大长度,约定采用截尾法。 4.2 串的表示和实现-定长顺序存储 4.2 串的表示和实现-定长顺序存储 4.2 串的表示和实现-定长顺序存储 Status Concat(SString T,SString S1,SString S2) /* 算法4.2改 */ { /* 用T返回S1和S2联接而成的新串。 若未截断,则返回TRUE,否则FALSE */ int i; if(S1[0]+S2[0]=MAXSTRLEN) { /* 未截断 */ for(i=1;i=S1[0];i++) T[i]=S1[i]; for(i=1;i=S2[0];i++) T[S1[0]+i]=S2[i]; T[0]=S1[0]+S2[0]; return TRUE; } 4.2 串的表示和实现-定长顺序存储 else { /* 截断S2 */ for(i=1;i=S1[0];i++) T[i]=S1[i]; for(i=1;i=MAXSTRLEN-S1[0];i++) T[S1[0]+i]=S2[i]; T[0]=MAXSTRLEN; return FALSE; } } 4.2 串的表示和实现-定长顺序存储 4.2 串的表示和实现-定长顺序存储 4.2 串的表示和实现-堆分配存储 类

文档评论(0)

整理王 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档