数组和稀疏矩阵

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(b) 上三角矩阵
如何压缩存储? 只存储上三角(或下三角)部分的元素。
a
16
特殊矩阵的压缩存储——稀疏矩阵
15 0 0 0 0 0 0 11 0 0 0 0 A= 0 0 0 6 0 0 0 0 00 0 0 9 0 00 0 0
如何只存储非零元素?
注意:稀疏矩阵中的非零元素的分布没有规律。
a
17
0
2
0
0
0
0
0
3 0 0 0 0 0 0
A67
0
0
0
5
0
0
0
0 0 0 0 6 0 0
第五章 数组和广义表
本章的基本内容是: 数组的基本概念 数组的逻辑结构 特殊矩阵的压缩存储 广义表
a
1
广义线性表——多维数组
线性表——具有相同类型的数据元素的有限序列。
限制插入、删除位置
特 栈——仅在表尾进行插入和删除操作的线性表。
殊 线 性
队列——在一端进行插入操作,而另一端进行 删除操作的线性表。
a
10
数组的存储结构——二维数组
按行优先存储的寻址
每行元素个数
l2
h2

l1
行 数
aij
h1
(a) 二维数组
本行中aij前面的元素个数
aij前面的元素个数
=阴影部分的面积
=整行数×每行元素个数+本行中aij
前面的元素个数 =(i -l1)×(h2 -l2+1)+(j -l2)
a
11
数组的存储结构——二维数组
5.2 稀疏矩阵
稀疏矩阵是指矩阵中存在大量的零元,非零元数 目较少且分布没有规律。
一个阶数较大的矩阵中的非零元素个数s相对 于矩阵元素的总个数t十分小时,即s<<t时,称该矩阵 为稀疏矩阵。例如一个100×100的矩阵,若其中只 有100个非零元素,就可称其为稀疏矩阵。
a
18
0 0 1 0 0 0 0
数组应该采用何种方式存储?
数组没有插入和删除操作,所以,不用预留空间, 适合采用顺序存储。
a
7
数组的存储结构——一维数组
已知:a[0] 地址为2000H,数组每个元素所占字节数 L为2 计算: a[5] 的地址
LOC(a[5])=LOC(a[0])+L*(5-0)
=2000+2*5
总结:
=2010
((i-0)*4+(j-0))*L
a
12
数组的存储结构——二维数组
第l1行
第l1+1行 按行优先存储的寻址
al1l2 … al1h2 a(l1+1)l2 … a(l1+1)h2 … … aij

ah1h2
Loc(al1l2) (i -l1)×(h2 -l2+1)+(j -l2)个元素 Loc(aij)
A=
62842 48169
对称矩阵特点:aij=aji
74605
82957
如何压缩存储? 只存储下三角部分的元素。
a
15
特殊矩阵的压缩存储——三角阵
3 cc c c 6 2c c c 4 81 c c 7 46 0 c 8 29 5 7
(a) 下三角矩阵
34 8 1 0 c2 9 4 6 cc15 7 cc c 0 8 cc c c 7
若是一维数组 已知起始地址为LOC(a1),每个元素所占 K个存储单元,则 LOC(ai)= LOC(a1) +K*(i-1)
a
8
数组的存储结构——一维数组
设一维数组的下标的范围为闭区间[l,h],每个
数组元素占用 c 个存储单元,则其任一元素 储地址可由下式确定:
ai 的存
Loc(ai)=Loc(al)+(i-l)×c
表 串——零个或多个字符组成的有限序列 。
限制元素类型为字符
线性表——具有相同类型的数a 据元素的有限序列。 2
5.1.1数组的基本概念
数组的定义
数组是由一组类型相同的数据元素构成的有 序集合,每个数据元素称为一个数组元素 (简称为元素),每个元素受n(n≥1)个线性 关系的约束,每个元素在n个线性关系中的 序 该号 数组i1、为i2、n 维…数、组in称。为该元素的下标,并称
Loc(aij)=Loc(al1l2)+((i-l1)×(h2-l2+1)+(j-l2))×c
按列优先存储的寻址方法与此类似。
a
13
5.1.3特殊矩阵的压缩存储
特殊矩阵:包括对称矩阵、三角矩阵、 对角矩阵和稀疏矩阵等。
稀疏矩阵:矩阵中有很多零元素。
a
14
特殊矩阵的压缩存储——对称阵
36478
c
al al+1 … … ai-1 ai … … ah
Loc(al)
Loca(ai)
9
数组的存储结构——二维数组
二维数组
内存
二维结构
一维结构
常用的映射方法有两种:
➢按行优先:先行后列,先存储行号较小的元素, 行号相同者先存储列号较小的元素。
➢按列优先:先列后行,先存储列号较小的元素, 列号相同者先存储行号较小的元素。
a
4
数组的基本概念
数组——线性表的推广
a11 a12 … a1n
A=
a21 a22 … a2n … … ……
am1 am2 … amn
A=(A1,A2,……,An)
其中: Ai=(a1i,a2i,……,ami)
(1≤i≤n)
二维数组是数据元素为线性表的线性表。
a
5
数组的基本概念
数组的基本操作
在数组中插入(或)一个元素有意义吗?
a
3
5.1.1数组的基本概念
数组具有以下性质:
(1) 数组中的数据元素数目固定。一旦定义了一 个数组,维数与维界及其数据元素数目不再有增减 变化。
(2) 数组中的数据元素具有相同的数据类型。
(3) 数组中的每个数据元素都和一组惟一的下标 值对应。
(4) 数组是一种随机存储结构。可随机存取数组 中的任意数据元素。
已知:int a[3][4];
已知:a[0] [0] 地址为2000H 数组每个元素所占字节数 L为2
计算: a[2][3] 的地址
LOC(a[2][3])=LOC(a[0][0])+((2-0)*4+(3-0))*L =2000+(8+3)*2 =2022
总结: LOC(a[i][j])=LOC(a[0][0])+
将元素 x 插入 到数组中第1行第2列。
x
删除数组中 第1行第2列元Hale Waihona Puke Baidu。
a11 a12 … a1n
A=
a21 a22 … a2n … … ……
a11 a12 … a1n
A=
a21 a22 … a2n … … ……
am1 am2 … amn
am1 am2 … amn
a
6
数组的基本概念
数组的基本操作
⑴ 存取:给定一组下标,读出对应的数组元素; ⑵ 修改:给定一组下标,存储或修改与其相对应的 数组元素。 存取和修改操作本质上只对应一种操作——寻址
相关文档
最新文档