- 1、本文档共66页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
chap5数组与广义表
第五章 数组与广义表 四类基本结构: 5.1 数组的定义和运算 1.基本概念 2. 数组的抽象数据类型定义 3.数组的运算 5.4 广义表 5.4.2 广义表的存储方式 一次定位快速转置算法——算法原理 A第j列(B第j行)非零元素个数num[j]的计算: for(j=1;j=A.n;j++) num[j]=0; for(t=1;t=A.len;t++) num[A.data[t].col]++; A第j列(B第j行)第一个非零元素在三元组表B中的位置cpot[j]的计算公式如下 cpot[1] = 1; for(j=2;jA.n;j++) cpot[j] = cpot[j-1]+num[j-1]; 如何将计算postion[j]的方法稍加改动,使算法只占用一个辅助向量空间? 快速转置算法——算法步骤 Step 1:扫描矩阵A的三元组表,统计出A的每一列的非零元素的个数,存放到数组num[]中 (num[j] 存放M第j列的非零元素个数) Step 3:再次扫描矩阵A的三元组表,根据非零元素的列号j,确定它转置后的行号,查cpot表,按查到的位置直接将该项存入转置三元组表B中,并修改cpot[j] ,将其指向该行下一个元素的存储位置(cpot[j]++ )。 Step 2:计算转置矩阵B的每一行在三元组表中的开始位置,并存放到数组cpot[]中 (cpot[j] 存放T第j行开始位置) void FastTranspose( TSMatrix A,TSMatrix B ) { int num[MAXSIZE+1], cpot[MAXSIZE+1], j,t,q; B.m=A.n; B.n=A.m; B.len=A.len; if(B.len) { } } j=A.data[t].col; q=cpot[j]; B.data[q].row=A.data[t].col; B.data[q].col=A.data[t].row; B.data[q].e=A.data[t].e; cpot[j]++; for(j=1;j=A.n;j++) num[j]=0; for(t=1;t=A.len;t++) num[A.data[t].col]++; cpot[1]=1; for(j=2;j=A.n;j++) cpot[j]=cpot[j-1]+num[j-1]; for(t=1;t=A.len;t++) { } A.len A.n-1 A.len A.n 循环次数: A.n+A. len +A.n-1 +A.len 该算法的总的循环次数为: A.n+A. len +A.n-1 +A.len = 2(A.n + A. len)-1 时间复杂度为:O(A.n + A. len) 即使非零元个数A. len与A.m*A.n同数量级,其时间复杂度为O(A.m*A.n),与经典算法时间复杂度相同。 当矩阵的非零元个数和位置在操作过程中变化较大时,就不宜采用顺序存储结构,这时可以采用链式结构。 由于矩阵有行和列,所以一个结点除了数据域(row,col,val)之外,还应该用两个方向的指针(right, down),分别指向行和列。 这样,整个矩阵构成了一个十字交叉的链表,因此称十字链表。每一行或每一列的头指针,可以用两个一维指针数组来存放。 5.3.2 稀疏矩阵的十字链表表示 十字链表的类型定义 typedef struct OLNode { int row,col; ElemType e; struct OLNode *right,*down; }OLNode, *OLink; typedef struct { OLink *row_head OLink *col_head; int m,n,len; }CrossList; row col e right down OLNode x; CrossList M; M.len M.n M.m M.col_head M.row_head 1 1 -3 1 4 -5 2 2 -1 3 1 8 ∧ ∧ ∧ ∧ ∧ ∧ 0 0 0 0 8 0 -1 0 -5 0 0 -3 ∧ M.col_head M.row_head ∧ ∧ ∧ ∧ ∧ ∧ ∧ ∧ 举例 稀殊矩阵: ②十字链表的建立 ——链表的插入 步骤: 1. 创建M.row_head, M.col_head动态数组, 2. 初始化M.row_head, M
您可能关注的文档
- 2012年第二季度耐火资料市场综述.doc
- 2012年管帐测验难点大串讲.doc
- 2012年胡庄村村规平易近约.doc
- 2012年进修雷锋运动计划.doc
- 2012年进编教员岗前培训暨2011年进编教员年度任务小结日程安=排.doc
- 2012年澳大利亚曼哲拉陆地打鱼船及游艇博览会.doc
- 2012年最具诚信上市企业前100强.doc
- 2012年长春展会信息大全.pdf
- 2012年省级文明单位测试题1.doc
- 2012年郑州展会信息大全.pdf
- T_JSAS 037.8—2023_放心消费创建示范建设第8部分:快递服务经营者.pdf
- T_JSAS 036—2023_生物有机营养液(基液).pdf
- T_CI 124-2023_草甘膦母液中增甘膦选择性分离回收利用技术规程.pdf
- T_EJCCCSE 407—2025(数字文创交易流通系统技术规范).pdf
- T_EJCCCSE 410—2025(数字文创资产权属系统技术规范).pdf
- T_ZJTSS 027—2025(茶炭疽病绿色防控技术规程).pdf
- T_CASME 851—2023_文身门店管理规范.pdf
- T_CI 164-2023_面向移动边缘计算的软件自适应卸载技术规范.pdf
- T_JSAS 038—2023_重力式码头沉箱气囊搬运技术规范.pdf
- T_CASME 817—2023_平底烫钻_标准.pdf
最近下载
- 2024年中级社工法规四色讲义-完整版全189页 .pdf VIP
- 17K408:散热器选用与管道安装.docx VIP
- 2025年湖北省武汉市高考物理四调试卷+答案解析(附后) .pdf VIP
- 合信 COTRUST科创思CTSC-200系列用户手册V1.40.pdf
- 2012湖南公务员考试-公共基础知识.doc VIP
- 二年级语文教师家长会专用.ppt
- 杭州名鑫双氧水有限公司每年10万吨(折27.5%)过氧化氢技术改造项目可行性研究报告.doc
- DB14Z 1-2025 高速公路智慧服务区建设指南.docx
- [城市轨道交通地下段列车运行引起的住宅室内振动与结构噪声限值及测量方法上海市.doc VIP
- SR变更管理程序+变更全套表单 OK.doc
文档评论(0)