- 1、本文档共65页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
{ int Bnubmer = 0; for(k=0;kCols;k++) for(i=0;iCount;i++) if(smArray[i].col==k) { b.smArray[Bnumber].row=k; b.smArray[Bnumber].col= smArray[i].row; b.smArray[Bnumber].value= smArray[i].value; Bnumber++;} } return b; // 返回转置矩阵 b } b[0] b[1] b[2] b[3] b[4] b[5] 0 0 50 3 0 -30 1 0 10 3 3 5 3 2 -60 1 2 20 a[0] a[1] a[2] a[3] a[4] a[5] 0 0 50 2 1 20 0 1 10 3 3 5 2 3 -60 0 3 -30 2 十字链表 ?矩阵的元素结构如下:分别表示该元素的左邻非零元素、上邻非零元素、所在的行、所在的列和它的值。 [例] 稀疏矩阵? LEFT UP ROW COL VAL 矩阵的每一行、每一列都设置为由一个表头结点引导的循环链表,并且各行和各列的表头结点有如下特点: -1 = COL(Loc(BASEROW[i])) 0 -1 = ROW(Loc(BASECOL[j])) 0 [例] “主步骤”操作:要求主行主列元素非零。 ? 主行 别列 主列 别行 a c … . . . … . . . . . . b d … . . . … . . . . . . … … 变换前 主行 别列 主列 别行 1/a … . . . … . . . . . . b/a d-bc/a … . . . … . . . . . . … -c/a 变换后 5.2 字符串 5.2.1 串的定义和操作 ● 串的定义:串是零个或多个字符组成的有限序 列。 记为 S = “a0a1… an-1”,串名 串值 串的长度 ● 空串:长度为零的串称为空串。 ● 空白串:由一个或多个空格组成的串称为空白 串。 子串:串中任意个连续字符组成的子序列称为该串的子串。 主串:包含子串的串相应地称为主串。 子串在主串中的位置:子串在主串中第一次出现时,子串第一个字符在主串中的序号。 [例] A = “This is a string” B = “is” 类String的串运算 [1] ??? 关系运算符 ,= , , = ,= = ,!= 的重载. [2] ??? 串拼接运算符的重载. [3] ? 从start位置确定字符c的位置: 函数int Find (char c,int start)const [4] ? 确定字符c最后一次出现的位置: 函数int FindLast(char c) const [5] ??取子串: 函数String Substr(int index,int count) const [6] ??? 在index处插入字符串s: 函数void Insert(const String s,int index) …… 5.2.2 串的存储方式 1 串的顺序存储:把一个串所包含的字符序列相继存入连续的字节中 ● 非紧缩格式 // 一个存储单元存放一个字符 [例] S = “a0a1… an-1” a0 a1 an-1 Word 0 Word 1 Word n-1 … … … … a ● 紧缩格式 // 一个存储单元存放多个字符 [例] S=“a0a1… an-1” // 一个存储单元存放4个字符 a1 a4 an-1 Word 0 Word 1 … … a0 a2 a3 a5 a6 a7 an-2 Word n/4 -1 … … a 2 串的链式存储串的链接存储是把可用的存储空间分成一系列大小相同的结点,其中每个结点的结构为: (str, link) 5 c h i n a ∧ p ● 结点大小为4的链 S
文档评论(0)