- 1、本文档共72页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数组和矩阵-Chapter5栈
数据结构与算法 Chapter4 数组和矩阵 本章教学内容 数组 矩阵 特殊矩阵 稀疏矩阵 4.3 特殊矩阵 方阵:具有相同行数和列数的矩阵 一些常用的特殊方阵 对角矩阵 三对角矩阵 下三角矩阵 上三角矩阵 对称矩阵 对角矩阵:所有非0元素都在对角线上,即当i≠j 时有M(i, j) = 0。 三对角矩阵: | i - j | 1 时有M(i, j ) = 0 下三角矩阵: i j 时有M (i, j ) = 0 上三角矩阵: i j 时有M (i, j ) = 0 对称矩阵: M (i, j ) =M (j, i ) 示例1:对称矩阵 任意两个城市之间的距离可以用一个 6 ×6的矩阵来表示。矩阵的第i行和第i列代表第i个城市,distance (i, j ) 代表城市i和城市j之间的距离。 示例2:上三角矩阵 堆栈折叠问题:选择n个折叠点 把堆栈分解成s个子堆栈;h是第i至第j纸盒所构成的堆栈的高度,h的可能取值是上三角矩阵。 1、对角矩阵的表示 使用二维数组:空间需要n2*sizeof(T) 压缩存储:只存储对角线上的元素 使用一维数组:空间需要n*sizeof(T) M(i,i) =A[i-1] 2、三对角矩阵的表示 只存储三个对角线上的元素(按行存储); 一维数组空间需要: (3n-2) *sizeof(T) 另外两种存储方法 另外的存储映射方式 3、三角矩阵的表示 下三角矩阵的存储形式 只存储对角线以下的元素: 4、对称矩阵的表示 只存储上三角/下三角部分 存储映射方式参照上三角/下三角矩阵 例如,只存储下三角,按行主次序,则 小结:特殊矩阵压缩存储 课堂练习 课堂练习 4.4 稀疏矩阵 稀疏矩阵(Sparse Matrix):大量矩阵元素的值为0,且分布没有一定的规律。 稠密矩阵:很少元素为0 结构化的稀疏矩阵 对角矩阵 三对角矩阵 下/上三角矩阵(算不算稀疏?) 非结构化的稀疏矩阵:需要特殊方法 稀疏矩阵的三元组表示 三元组定义 template class T class Term { private: int row, col; T value; }; 稀疏矩阵的存储结构 稀疏矩阵的类定义(程序4-20) 求稀疏矩阵的转置 矩阵转置常规算法 稀疏矩阵快速转置算法 【算法目标】将*this的转置结果存放在矩阵b中; 【算法思想】 若能在转置前求出矩阵*this的每一列col(即b中每一行)的第一个非零元转置后在b. a中的正确位置,则在对this-a的三元组依次作转置时,便可直接放到b.a中的恰当位置上去。 为了确定这些位置,在转置前,应先求得*this的每一列中非零元的个数进而就可求得A的每一列的第一个元素在b.a中应有的位置。 稀疏矩阵快速转置算法的具体做法(程序4-23) 引入两个辅助数组(1) ColSize[ ] ColSize[i]:*this矩阵第i列中的非0元素数(转置矩阵的第i行的非0元素个数); 稀疏矩阵快速转置算法的具体做法(程序4-23) 引入两个辅助数组(2) RowNext[ ] RowNext[i]:转置矩阵b第i行的下一个非0元素在b中的位置。 稀疏矩阵快速转置算法(程序4-23) templateclass T void sparseMatrixT::transpose(sparseMatrixT b) { // 把*this的转置结果送入b if(termsb.MaxTerms) throw Nomem( ); // 设置转置特征 b.cols = rows; b.rows = cols; b.terms=terms; // 初始化 int* colSize = new int[cols + 1]; int* rowNext = new int[cols + 1]; 稀疏矩阵的链表描述:十字链表 行链表的串接 十字链表:一种描述形式 结点结构: 行链表数组 列链表数组 行列链表的最终组合 本书链表描述 看书提示 书上例子三个ADT之间是引用关系! 列链表节点 行链表节点 稀疏矩阵的链表定义 稀疏矩阵的构造 课下自学 稀疏矩阵的输出: 注意操作符重载的嵌套使用 稀疏矩阵转置:两步 箱子分配:先行链表、后列链表 箱子收集:稀疏链表的构造 本章小结 二维数组的一维存储 行优先 列优先 一维数组类、二维数组类、Matrix类 特殊矩阵的压缩存储 压缩方法 映射公式 稀疏矩阵 存储方式(三元组顺序表、十字链表) 转置算法 Chapter5 栈(Sta
您可能关注的文档
- 我们如何通过互联网促销.doc
- 八年级上学期数学中测试卷1.doc
- 2012年上半年重性精神疾病管理工作总结.doc
- 高中句型doc.doc
- 常州市建设工程招标公告(空调、电梯1.0示范文本).doc
- 激发宝宝绘画潜能的小游戏.doc
- 08隐式对象(上).ppt
- 所得税概括.doc
- 监理安全大检查.doc
- M7U2It27sthefastesttrain.(外研社七年级下).ppt
- 2024高考物理一轮复习规范演练7共点力的平衡含解析新人教版.doc
- 高中语文第5课苏轼词两首学案3新人教版必修4.doc
- 2024_2025学年高中英语课时分层作业9Unit3LifeinthefutureSectionⅢⅣ含解析新人教版必修5.doc
- 2024_2025学年新教材高中英语模块素养检测含解析译林版必修第一册.doc
- 2024_2025学年新教材高中英语单元综合检测5含解析外研版选择性必修第一册.doc
- 2024高考政治一轮复习第1单元生活与消费第三课多彩的消费练习含解析新人教版必修1.doc
- 2024_2025学年新教材高中英语WELCOMEUNITSectionⅡReadingandThi.doc
- 2024_2025学年高中历史专题九当今世界政治格局的多极化趋势测评含解析人民版必修1.docx
- 2024高考生物一轮复习第9单元生物与环境第29讲生态系统的结构和功能教案.docx
- 2024_2025学年新教材高中英语UNIT5LANGUAGESAROUNDTHEWORLDSect.doc
文档评论(0)