版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、,第五章 数组和广义表,5.1 数组的定义 5.2 数组的顺序表示和实现 5.3 矩阵的压缩存储 5.3.1 特殊矩阵 5.3.2 稀疏矩阵,数组:线性表中数据元素本身也是一个线性表 5.1 数组的定义和特点 定义,数组特点 数组结构固定 数据元素同构,数组的基本操作,在数组中插入(或)一个元素有意义吗?,将元素 x 插入 到数组中第1行第2列。,删除数组中 第1行第2列元素。,数组的基本操作, 存取:给定一组下标,读出对应的数组元素; 修改:给定一组下标,存储或修改与其相对应的数组元素 存取和修改操作本质上只对应一种操作寻址,数组应该采用何种方式存储?,数组没有插入和删除操作,所以,不用预留
2、空间,适合采用顺序存储。,5.2 数组的顺序存储结构 次序约定 以行序为主序 以列序为主序,1、对称矩阵 对称矩阵:在一个n阶方阵A中,若元素满足下述性质: aij=aji 0i,jn-1,5.3 矩阵的压缩存储,二维数组下标从0开始时:,二维数组下标从1开始时:,2、三角矩阵 三角矩阵:矩阵的上(下)三角(不包括对角线)中的元素均为常数c或零的n阶矩阵 a00 a01 a 0 n-1 a00 c c c a11 a 1 n-1 a10 a11 c . . c c a n-1 n-1 an-1 0 an-1 1 an-1 n-1 (a)上三角矩阵 (b)下三角矩阵,二维数组下标从1开始时:,3
3、 对角矩阵-非零元素集中在主对角线为中心的带状区域,Loc(aij)= LOC(a11)+3*(i-1)-1+(j-i+1)*I= Loc(a11)+2(i-1)+(j-1),需存储的元素个数为3n-2,二维数组下标从1开始时:,M由(1,2,12), (1,3,9), (3,1,-3), (3,6,14), (4,3,24), (5,2,18), (6,1,15), (6,4,-7) 和矩阵维数(6,7)唯一确定,压缩存储原则:只存矩阵的行列维数和每个非零元的行列下标及其值,本元素在矩阵中(包括零元素在内)按行优先顺序的相对位置,伪地址表示法需存储单元个数 为2(t+1),伪地址表示法,4
4、稀疏矩阵 (1)定义:非零元素比零元素少,且分布没有一定规律的矩阵,M由(1,2,12), (1,3,9), (3,1,-3), (3,6,14), (4,3,24), (5,2,18), (6,1,15), (6,4,-7) 和矩阵维数(6,7)唯一确定,压缩存储原则:只存矩阵的行列维数和每个非零元的行列下标及其值,(2)稀疏矩阵的压缩顺序存储: 三元组表,三元组表所需存储单元个数为3(t+1) 其中t为非零元个数,6 7 8,1 2 12,1 3 9,3 1 -3,3 6 14,4 3 24,5 2 18,6 1 15,6 4 -7,ma0.r,ma0.c,ma0.v分别存放 矩阵行列维数
5、和非零元个数,#define MaxSize 20 typedef struct node int r, c; /非零元素的行下标、列下标 ElemType v;/非零元素的值 TupNode; Typedef struct int rows;/矩阵的行数 int cols; /矩阵的列数 int nums; /矩阵的非零元素的个数 TupNode dataMaxSize; /三元组表以行序为主序排列 TSMatrix;,(3)三元组表顺序表的数据结构定义:,for(col=0;coln;col+) for(row=0;rowm;row+) ncolrow=mrowcol;,(4)应用矩阵运算
6、求转置矩阵,一般矩阵转置算法,T(n)=O(mn),问题描述:已知一个稀疏矩阵的三元组表,求该矩阵转置矩阵的三元组表,方法一:按M的列序转置 按mb中三元组次序依次在ma中找到相应的三元组进行转置,为找M到中每一列所有非零元素,需对M三元组表ma从第一行起扫描一遍。 由于ma中以M行序为主序,所以得到的恰是mb中应有的顺序,解决思路: 1.将矩阵行、列维数互换;将每个三元组中的i和j相互调换 2.重排三元组次序,使mb中元素以N的行(M的列)为主序,7 6 8,1 3 -3,1 6 15,2 1 12,2 5 18,3 1 9,3 4 24,4 6 -7,6 3 14,col=1,col=2,
7、按ma中三元组次序转置,转置结果放入b中恰当位置。此法关键是要预先确定M中每一列第一个非零元在mb中位置,为确定这些位置,转置前应先求得M的每一列中非零元个数,实现:设两个数组 numcol:表示矩阵M中第col列中非零元个数 cpotcol:指示M中第col列第一个非零元在mb中位置 显然有:,1,3,5,7,8,8,9,方法二:快速转置,7 6 8,1 3 -3,1 6 15,2 1 12,2 5 18,3 1 9,3 4 24,4 6 -7,6 3 14,4,6,2,9,7,5,3,需存储单元个数为3t+m,头结点与单链表结点类型定义为:,链式存储结构 带行指针向量的单链表:每行的非零元用一个单链表存放 设置一个行指针数组,指向本行第一个非零元结点;若本行无非零元,则指
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《有机化学》-第12章
- 教学材料《车身计算机系统》-3
- DB34-T 5379-2026 面向终身学习的用户画像技术要求
- 安徽高校专业就业指导
- 某变速器厂车间照明管控制度
- 安徽省霍邱县二中2026届高一下生物期末调研模拟试题含解析
- 某预制构件厂废水处理实施办法
- 呼吸道感染健康指导
- 江苏省徐州市睢宁高级中学南校2026届高一生物第二学期期末复习检测试题含解析
- 医学会议赞助方的利益冲突影响及应对
- 2025年贵州医疗岗位笔试真题及答案
- 江苏省江阴市普通高中2026年高三4月模拟考试生物试题试卷含解析
- 2026新余市12345政务服务便民热线招聘5人笔试备考试题及答案解析
- 2026年社工证考试试题及答案
- 2026届北京市东城区高三语文期末试题及答案
- 机械臂安全事故培训课件
- 混凝土地坪施工组织设计方案
- 质量文化建设的重要性
- 中信建投笔试题库及答案
- 2026年江苏航空职业技术学院单招综合素质考试必刷测试卷必考题
- 二年级下册体育教案全套范本
评论
0/150
提交评论