第5章数组和广义表PPT课件

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
A、j(j-1)/2+i-1 B、j(j-1)/2+i C、j(j+1)/2+i-1 D、 j(j+1)/2+i
数据结构(Java版)》叶核亚
5.2.2 稀疏矩阵的压缩存储
表示稀疏矩阵的三元组
0 0 11 0 17 0
0
20
0
0
0
0
行号 row
列号 column
元素值 value
A56
0 19
设矩阵A是一个对称矩阵,为了节省空间,将其下三角部分 按行优先存放在一维数组B中。对下三角矩阵中任一元素 aij(i>=j,j>=1),在一维数组B中下标K的值是:
A、i(i-1)/2+j-1 B、i(i-1)/2+j C、i(i+1)/2+j-1 D、 i(i+1)/2+j
设矩阵A是一个对称矩阵,为了节省空间,将其上三角部分 按列优先存放在一维数组B中。对上三角矩阵中任一元素 aij(i<=j,i>=1),在一维数组B中下标K的值是:
1.多维数组的逻辑结构
数据结构(Java版)》叶核亚
5.1.2 多维数组
2.多维数组的遍历
(1)行优先次序
a1,1 a1,2 a1,n
Amn
a2,1
am,1
a2,2 am,2
a2,n
am,n
a1,1,a1,2,…,a1,n,a2,1,a2,2,…, a2,n,…,am,1,am,2,…,am,n
常见的广义表为:
L=(a,b)
//线性表,长度为2 ,深度为1
T=(c,L)=(c,(a,b)) //L为T的子表,T的长度为2 , 深度为2
G=(d,L,T)=(d,(a,b),(c,(a,b)))
深度为3
//L、T为G的子表,G的长度为3 ,
特殊矩阵压缩存储,掌握广义表。
▪ 重点: ▪ 难点:广义表的表示和实现。
5.1 数组
5.1.1 一维数组 5.1.2 多维数组
数据结构(Java版)》叶核亚
5.1.1 一维数组
Loc(ai)= Loc(a0)+i ×c 数组分配内存空间的方式有2种
静态数组:声明时给出数组元素个数。当程序开始运行时, 数组即获得系统分配的一块地址连续的内存空间。静态数组 所占用的内存空间由系统自动管理。
(2)列优先次序
a1,1,a2,1,…,am,1,a1,2,a2,2,…, am,2,…,a1,n,a2,n,…,am,n
数据结构(Java版)》叶核亚
3.多维数组的顺序存储结构
将二维数组Am×n按行优先次序存储在内存 以后,元素ai,j的地址计算公式为:
Loc(ai, j ) Loc(a1,1) ((i 1)n ( j 1)) c
动态数组:声明时不指定数组长度。当程序运行中需要使用 数组时,向系统申请数组的存储单元空间,并给出数组长度。 当数组使用完之后,需要向系统归还所占用的内存空间。
在Java中,数组元素既可以简单数据类型,也可以是 引用类型。而且Java中的数组都是动态数组。
数据结构(Java版)》叶核亚
5.1.2 多维数组
数据结构(Java版)》叶核亚
5.2.1 对称(三角)矩阵的存储
三角矩阵
Loc(aij )
Loc(a00 )
i (i 1) 2
j
a0,0
Ann
a1,0 …
0≤ j≤ i< n an1,0
0 a1,1 … an1,1
… 0

0
… …

an1ava版)》叶核亚
其中元素ai有以下两种类型:
1)一个原子元素(指不可再分的元素); 2)一个可以再分的元素(或称为一个子表)。
其中List是广义表的名称,n是广义表的长度。 如果所有元素都是原子元素,则称为线性表,如果
含有子表则是广义表。
数据结构(Java版)》叶核亚
5.3.1 广义表的概念
广义表中含有元素的个数称为广义表的长度,广义表中含 有的括号对数称为广义表的深度。(原子的深度为0)
《数据结构(Java版)》
《数据结构(Java版)》
▪ 第1章 绪论 ▪ 第2章 线性表 ▪ 第3章 栈与队列 ▪ 第4章 串 ▪ 第5章 数组和广义表 ▪ 第6章 树和二叉树 ▪ 第7章 查找 ▪ 第8章 图 ▪ 第9章 综合应用设计
第5章 数组和广义表
5.1 数组 5.2 特殊矩阵的压缩存储 5.3 广义表 ▪ 目的:了解包含子结构的线性结构。 ▪ 要求:理解多维数组的存储结构,掌握
按列优先次序存储数组时,元素ai,j的地址
计算公式为:
Loc(ai, j ) Loc(a1,1) ( j 1)m (i 1) c
数据结构(Java版)》叶核亚
【例5.1】 矩阵类。
a00
Amn
a10 …
am1,0
a01 a11 … am1,1
… a0,n1

a1,n1
… …

am1,n1
十字链表
数据结构(Java版)》叶核亚
5.3 广义表
5.3.1 广义表的概念 5.3.2 广义表的存储结构
数据结构(Java版)》叶核亚
5.3.1 广义表的概念
1.广义表的定义
广义表(general list)是n(n≥0)个数据元素a1, a2,…, an组成的有限序列,记为: List=(a1, a2,…, an)
矩阵运算主要有矩阵加、矩阵减、矩阵乘、矩 阵转置等。矩阵加(C=A+B)定义为
public class Matrix {
cij aij bij
private int value[][];
}
数据结构(Java版)》叶核亚
5.2 特殊矩阵的压缩存储
将矩阵Am×n存储在二维数组中,将占用m×n 个存储单元。当矩阵中有很多零元素或部分非 零元素具有某种分布规律时,如果存储矩阵全 部元素,则由于存储了重复元素或大量的零元 素,浪费了存储空间。 压缩存储的原则:多个重复元素只存储一份; 不存储零元素。 5.2.1 对称(三角)矩阵的存储 5.2.2 稀疏矩阵的压缩存储
0 0
0 0 0 0 0 0 0 28
0 0 0 0 50 0
{(0,2,11),(0,4,17),(1,1,20),(3,0,19),(3,5,28),
(4,4,50)}
例5.2 稀疏矩阵 的三元组顺序表实现。
数据结构(Java版)》叶核亚
三元组链表
三元组单链表 行/列的单链表
数据结构(Java版)》叶核亚
相关文档
最新文档