第05章_数组和广义表B探究.ppt

  1. 1、本文档共21页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* * * * * * * * * * * * 第5章 数组和广义表(Arrays Lists) 5.1 数组的定义 5.2 数组的顺序存储表示和实现 5.3 矩阵的压缩存储 5.4 广义表的定义 5.5 广义表的存储结构 * 二、稀疏矩阵的操作 0 12 9 0 0 0 0 0 0 0 0 0 -3 0 0 0 14 0 0 0 24 0 0 0 0 18 0 0 0 0 15 0 0 -7 0 0 0 0 –3 0 0 15 12 0 0 0 18 0 9 0 0 24 0 0 0 0 0 0 0 -7 0 0 14 0 0 0 0 0 0 0 0 0 (1, 2, 12) (1, 3, 9 ) (3, 1, -3) (3, 5, 14) (4, 3, 24) (5, 2, 18) (6, 1, 15) (6, 4, -7) (1, 3, -3) (1, 6, 15) (2, 1, 12) (2, 5, 18) (3, 1, 9) (3, 4, 24) (4, 6, -7) (5, 3, 14) 已知 三 元 组 表 a.data 求 三 元 组 表 b.data 转置后 M T (以转置运算为例,加减用十字链表) 目的: * 答:肯定不正确! 除了: (1)每个元素的行下标和列下标互换(即三元组中的i和j互换); 还需要:(2) T的总行数mu和总列数nu也要互换; (3)重排三元组内各元素顺序,使转置后的三元组也按行(或列)为主序有规律的排列。 上述(1)和(2)容易实现,难点在(3)。 若采用三元组压缩技术存储稀疏矩阵,只要把每个元素的行下标和列下标互换,就完成了对该矩阵的转置运算,这种说法正确吗? 有两种实现转置的方法 压缩转置 快速(压缩)转置 提问: * 方法1:压缩转置 思路:反复扫描a表(记为a.data)中的列序,从j=1~n依次进行转置。 已知 三 元 组 表 a.data 求 三 元 组 表 b.data ① (1, 3, -3) ② (1, 6, 15) ③ (2, 1, 12) ④ (2, 5, 18) ⑤ (3, 1, 9) ⑥ (3, 4, 24) ⑦ (4, 6, -7) ⑧ (5, 3, 14) (1, 2, 12) (1, 3, 9 ) (3, 1, -3) (3, 5, 14) (4, 3, 24) (5, 2, 18) (6, 1, 15) (6, 4, -7) 1 1 2 2 col q 1 2 3 4 每个元素的列分量表示为: a.data[p].j p 1 2 3 4 . . . . . . * 方法2 快速转置 已知 三 元 组 表 a.data 求 三 元 组 表 b.data ③ (1, 3, -3) ① (2 ,1, 12) ⑥ (2, 5, 18) ② (3, 1, 9) ⑧ (4, 6, -7) ④ (5, 3, 14) ⑦ (1, 6, 15) ⑤ (3, 4, 24) (1, 2, 12) (1, 3, 9 ) (3, 1, -3) (3, 5, 14) (4, 3, 24) (5, 2, 18) (6, 1, 15) (6, 4, -7) 思路:依次把a.data中的元素直接送入b.data的恰当位置上(即M三元组的p指针不回溯)。 关键:怎样寻找b.data的“恰当”位置? p 1 2 3 4 q 3 5 * 如果能预知M矩阵每一列(即T的每一行)的非零元素个数, 又能很快得知第一个非零元素在b.data中的位置, 则扫描a.data时便可以将每个元素准确定位(因已知若干参考点) 技巧:为实现转置运算,应当按列生成 M 矩阵三元组表的两个辅助向量,让它携带每列的非零元素个数 NUM(i) 以及每列的第一个非零元素在三元组表中的位置POS(i) 等信息。 设计思路: i 1 2 3 4 5 6 NUM(i) 2 2 2 1 1 0 POS( i ) 1 3 5 7 8 9 计算式:POS(1)=1 POS(i)=POS(i-1)+NUM(i-1) 辅助向量的样式: 请注意a.data特征:每列首个非零元素必定先被扫描到。 * 令:M矩阵中的列变量用col表示

文档评论(0)

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

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

1亿VIP精品文档

相关文档