第4章 其他线性数据结构.ppt

  1. 1、本文档共50页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第4章 其他线性数据结构 4.1 串 4.2 多维数组 4.3 稀疏矩阵 4.4 应用举例及分析 本章要点 串、多维数组、特殊矩阵及稀疏矩阵的定义 串、多维数组、特殊矩阵及稀疏矩阵的存储方式 串、稀疏矩阵的基本操作 本章难点 多维数组的顺序存储 特殊矩阵的压缩存储 稀疏矩阵的基本操作 4.1 串 串是一种特殊的线性结构,它的数据元素仅由字符组成。 4.1.1 串的定义和基本操作 1. 串的相关概念 串(String) 串是由零个或多个字符组成的有限序列。一般记为S = “a1 a2 …an” (n ≥ 0)。其中,S是串名,用单引号或双引号括起来的字符序列是串的值,ai (1 ≤ i ≤ n)可以是字母、数字或其他字符。值得注意的是,引号本身不属于串。 串的长度 串中字符的数目n。 空串 长度为0的串。 空格串 由一个或多个空格组成的串。需要注意的是,空格串不是空串,空格串的长度由其中空格的数目决定,而空串的长度为0。 4.1.1 串的定义和基本操作 串的子串、主串 串中任意个连续的字符组成的子序列称为该串的子串,包含子串的串相应地称为主串。空串是任意串的子串,任意串是其自身的子串。 字符在串中的位置 字符在序列中的序号。 子串在主串中的位置 以子串的第一个字符在主串中的位置来表示。 两串相等 当两个串的长度相等,并且各个对应位置上的字符都相等时,称这两个串相等。例如上例中的C、D看起来相似,但不相等。 4.1.1 串的定义和基本操作 2. 串的基本操作 (1)= 赋值操作 赋值号左边必须是串变量,右边可以是串变量、串常量或运算值是串值的表达式。 (2判两串是否相等的函数。若S和T相等,则返回函数值“true”或1;否则返回函数值“false”或0。S和T可以是空串,也可以是非空串。 (3)求串的长度的函数。函数值为串S中字符的个数。 (4)联接操作。设S,T1,T2都是串变量,联接操作就是将串T1和串T2放入S中。S串中的前一段和串T1相等,S串中的后一段和串T2相等。CONCAT(S,T1,T2)与CONCAT(S,T2,T1)的结果不一样。联接操作还可推广至n个串变量。 (5)SUBSTR(S, i , j ) 求子串函数。当1≤ i ≤STRLEN(S) 且0≤ j ≤STRLEN(S) - i + 1,返回函数值是S的一个子串,即从串S中第i个字符起,长度为j的字符序列。否则返回一个特殊的值。 (6)INDEX(S,T) 定位函数。若在主串S中存在和T相等的子串,则函数值返回在S中出现的第一个和T相等的子串在S中的位置,否则函数值为零。注意T不能是空串。 4.1.1 串的定义和基本操作 (7)置换操作。操作结果是以串V替换所有在串S中出现的和串T相等的不重叠的子串。 (8)插入操作。当1≤pos≤STRLEN(S) + 1时,在串S的第pos个字符之前插入串T。 (9)删除操作。当1≤pos≤STRLEN(S)且0≤len≤STRLEN(S) - pos + 1时,从串S中删去第pos字符起、长度为len的子串。 (10)串复制 (11)输出串 1、串赋值运算 void Assign(SqString s,char t[]) { int i=0; while (t[i]!=\0) { s.ch[i]=t[i]; i++; } s.len=i; } 2、串复制运算 void StrCopy(SqString s,SqString t) { int i; for (i=0;it.len;i++) s.ch[i]=t.ch[i]; s.len=t.len; } 3、求串长运算 int StrLength(SqString s) { return(s.len); } 4、判断串相等运算 int StrEqual(SqString s,SqString t) { int i=0; if (s.len!=t.len) /*串长不同时返回0*/ return(0); else { for (i=0;is.len;i++) if (s.ch[i]!=t.ch[i]) /*有一个对应字符不同时返回0*/ return(0); return(1); } } 5、串连接运算 SqString Concat(SqString s,SqString t) { SqString r; int i,j; for (i=0;is.len;i++) /*将s复制到r*/ r.ch[i]=s.ch[i]; for (j=0;jt.len;j++) /*将t复

文档评论(0)

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

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

1亿VIP精品文档

相关文档