第5章 多维数组和广义表

合集下载

《数据结构与算法(C++语言版)》第5章 多维数组与广义表

《数据结构与算法(C++语言版)》第5章 多维数组与广义表

数 组
• 4.寻址公式的计算 • 下面考虑如何根据一组给定下标求出对应数组元素地址的 问题,这是数组最重要的基本操作,一般用在高级语言的 实现当中。这里只考虑n维数组按行存储的寻址公式的计算。 用秦九韶法变换按行存储公式中的主要部分: • j1d2d3…dn + j2d3…dn +…+jn–1dn + jn • =(j1d2+ j2)d3…dn + j3d4…dn +…+jn–1dn + jn • =((j1d2+ j2)d3+ j3)d4…dn + j4d5…dn +…+jn–1dn + jn • =… • =(…(j1d2+ j2)d3+ j3)d4+j4)d5+…+jn–1)dn+ jn • =(…((0×d1+j1)d2+ j2)d3+ j3) d4+j4)d5+…+jn–1)dn+ jn
数 组
• 1. 一维数组 • 一维数组的每个元素只含一个下标,其实质上是一个线性 表,存储方法与普通线性表的顺序存储方法完全相同,即 将数组元素按它们的逻辑次序存储在一片连续区域内。设 一维数组为A =(a0, a1,…, an–1),则它的元素ai的相对地址为 Loc(ai) = i×c。这里,c表示每个元素占用的存储单元数目。
矩阵的压缩存储
• 矩阵是很多科学与工程计算问题研究的数学对象。在高级 语言程序设计中,常用二维数组来存储矩阵元素,有些程 序语言还提供了各种方便用户使用的矩阵运算。然而,对 于在数值分析中经常出现的一些阶数很高,且矩阵中有许 多值相同的元素或者是零元素的特殊矩阵,不适合用二维 数组来存放,因为这将造成大量存储空间的浪费。为了节 省存储空间,可对这类矩阵进行压缩存储,即为多个值相 同的元素只分配一个存储空间,对零元素不分配空间。

数组和广义表

数组和广义表

2.三维及多维数组
三维数组Amnp: 可看成有p个二维数组(m*n)所组成的向量,
每个元素aijk同属于三个向量,每个元素最多有3个直接前趋
和3个直接后继。
推广:多维数组An1n2…nm可看成nm个(m-1)维数组所 构成的向量, 任一元素ai1i2…im都属于m个向量,最多有
பைடு நூலகம்
m个直接前趋和m个直接后继。
a11 a21 …... am1a12 a22 …… am2 … … a1n a2n … amn
第 1列
第 2列
第 n列
(以二维数组Amn为例,且数组采用行优先顺序) LOC(aij)=LOC(a11)+[(i-1)*n+j-1]*d
开始元素的 存储起址
n为列数 d为单个元素 所占单元数
c语言中因数组下标从0开始,因此上面的式子应改为: LOC(aij)=LOC(a00)+(i*n+j)*d 随机存取结构 顺序存储的数组是一个随机存取结构,即只要知道开始元
-3 0 0 2 0
转置
B=
0 0 0 0 1 2
0 0 0
0 0 -3 0 2 0 0 0
A= 0 0 0 1 0
-3 0 0 2 0
转置
2 0 0
B=
0 0 0 0 1 2 0 0 0
i 0 1 2
j 1 3 0
v 2 1 -3
i 0
j 2 0 1 2
v -3 2 1 2
转置后
1 3 3
2
3
2
二、多维数组的运算
对于多维数组,通常只有两种操作: 1. 取值:给定一组下标,存取相应的数据元素; 2. 修改:给定一组下标,修改相应数据元素中的某一个

数据结构:第五章:多维数组、稀疏矩阵和广义表

数据结构:第五章:多维数组、稀疏矩阵和广义表

浙江大学计算机学院 杨枨
数据结构
第五章
A的深度为1 B的深度为1 C的深度为2 D的深度为∞
第 21 页 2020年7月5日
5.3.2 存储结构
通常采用链式结构来进行存储
tag
data/link
next
图 5-8 广义表链式存储结构中的结点结构
➢ tag为标志域 ✓ tag=0,则表示该结点为原子结点 ✓ tag=1,则表示该结点为子表
➢ 反之,我们如果按非零元素在A中的列主序进行转置,得到的就是必是按行主序排列的 转置矩阵。
➢ 转置算法的基本思想是:
✓ 对A的三元组表进行c次扫描(c是A的列数),每次扫描都把A的某一列中的非零元 素按序排好,放入B的三元组表中,就得到了B的一行。
✓ 在每次扫描中,为了找到A的每一列中的每一个非零元素,都必须从头到尾扫描A 的三元组表。
➢ 求广义表的深度 ➢ 求广义表的长度、插入、删除、查找等
浙江大学计算机学院 杨枨
数据结构
第 23 页 2020年7月5日
5.3 小结
介绍:
➢ 多维数组 ➢ 稀疏矩阵
✓ 稀疏矩阵可看作是一种特殊的二维数组, ✓ 稀疏矩阵进行压缩存储,可以有效地节省存储空间 ➢ 广义表 ✓ 广义表是一种复杂的数据结构 ✓ 存储表示方法。
浙江大学计算机学院 杨枨
数据结构
第 17 页 2020年7月5日
5.2.2 稀疏矩阵的转置运算
第五章
用三元组顺序表表示的稀疏矩阵的转置运算
➢ 在这个算法中,外层循环用于控制扫描次数,共扫描c次(c是A的列数),每 次扫描都排好B的一行;
➢ 内层循环从头到尾扫描A的三元组表以判断三元组表中的每一个元素是否需要 转置。

《数据结构与算法》第五章-数组和广义表学习指导材料

《数据结构与算法》第五章-数组和广义表学习指导材料

《数据结构与算法》第五章数组和广义表本章介绍的数组与广义表可视为线性表的推广,其特点是数据元素仍然是一个表。

本章讨论多维数组的逻辑结构和存储结构、特殊矩阵、矩阵的压缩存储、广义表的逻辑结构和存储结构等。

5.1 多维数组5.1.1 数组的逻辑结构数组是我们很熟悉的一种数据结构,它可以看作线性表的推广。

数组作为一种数据结构其特点是结构中的元素本身可以是具有某种结构的数据,但属于同一数据类型,比如:一维数组可以看作一个线性表,二维数组可以看作“数据元素是一维数组”的一维数组,三维数组可以看作“数据元素是二维数组”的一维数组,依此类推。

图5.1是一个m行n列的二维数组。

5.1.2 数组的内存映象现在来讨论数组在计算机中的存储表示。

通常,数组在内存被映象为向量,即用向量作为数组的一种存储结构,这是因为内存的地址空间是一维的,数组的行列固定后,通过一个映象函数,则可根据数组元素的下标得到它的存储地址。

对于一维数组按下标顺序分配即可。

对多维数组分配时,要把它的元素映象存储在一维存储器中,一般有两种存储方式:一是以行为主序(或先行后列)的顺序存放,如BASIC、PASCAL、COBOL、C等程序设计语言中用的是以行为主的顺序分配,即一行分配完了接着分配下一行。

另一种是以列为主序(先列后行)的顺序存放,如FORTRAN语言中,用的是以列为主序的分配顺序,即一列一列地分配。

以行为主序的分配规律是:最右边的下标先变化,即最右下标从小到大,循环一遍后,右边第二个下标再变,…,从右向左,最后是左下标。

以列为主序分配的规律恰好相反:最左边的下标先变化,即最左下标从小到大,循环一遍后,左边第二个下标再变,…,从左向右,最后是右下标。

例如一个2×3二维数组,逻辑结构可以用图5.2表示。

以行为主序的内存映象如图5.3(a)所示。

分配顺序为:a11 ,a12 ,a13 ,a21 ,a22,a23 ; 以列为主序的分配顺序为:a11 ,a21 ,a12 ,a22,a13 ,a23 ; 它的内存映象如图5.3(b)所示。

数据结构(Java版)-电子教案 第五章 维数组和广义表

数据结构(Java版)-电子教案  第五章 维数组和广义表

例如,二维数组:
A1=( a11 a12 … a1n) A=(A1,A2,…Am)
A2=(a21 a22 … a2n)
… … ……
Amn
Am=(am1 am2 … amn )
a11 a12 .....a 1n a 21 a 22 .....a 2n .......... .......... a m1 a m2 .....a mn
3 4
Ai2 x+10*m x+11*m x+12*m x+13*m x+14*m
Ai3 x+15*m x+16*m x+17*m x+18*m x+19*m
x x+m x+2*m x+3*m x+4*m
址为x
5 6 假设每一个元素占用的存储空间大小为 m,A00的内存地 第二排
5.2 多维数j A1j A2j A3j A4j
1
Ai1 x+m x+5*m x+9*m x+13*m x+17*m
3 4
Ai2 x+2*m x+6*m x+10*m x+14*m x+18*m
Ai3 x+3*m x+7*m x+11*m x+15*m x+19*m
5.1 多维数组
5.1.2 多维数组在计算机内的存放 由于计算机的内存结构是一维的,因此用一维内存来表示 多维数组,就必须按某种次序将数组元素排成一序列,然后 将这个线性序列存放在存储器中。又由于对数组一般不做插 入和删除操作,也就是说,数组一旦建立,结构中的元素个 数和元素间的关系就不再发生变化。因此,一般都是采用顺 序存储的方法来表示数组。

《数据结构——用C语言描述(第二版)》第5章 数组和广义表

《数据结构——用C语言描述(第二版)》第5章  数组和广义表
是指矩阵的下三角(不含对角线)中的元素均为常数C或零的n阶矩阵,下 三角矩阵则与之相反,如图5.3所示。
第五章 数组和广义表
在压缩存储时,矩阵中值相同的元素C可共享一个存储空间,元素 为零则可不必分配空间,而其余的元素有 n(n+1)/2个,因此三角矩阵 可用一维数组M[n×(n+1)/2+1]来存储,其中常数C放在数组的最后一 个下标变量中。
假设A和B矩阵分别用matrix型指针变量a和b表示,矩阵的转置可以 按以下进行:由于B的行是A的列,所以可按照b->data三元组表的次序在 a->data中找到相应的三元组进行转置,即可按a->data的列序转置,所得 到的转置矩阵B的三元组表b->data必定是按行优先存放的。因此,可以对 三元组表a->data从第一行起扫描,找到A的每一列中所有的非零元素,就 可以实现转置。
LOC ( aij ) =LOC ( a00) +(i×n+j) × c 同理可推导出以列为主序优先存储时数据元素a i j 的存储地址,其计算公式 为:
LOC( a i j ) =LOC( a00 ) +( j × n +i ) × c 对于三维数组Am×n×p而言,若以行为主序优先存储时,则其数据元 素aijk的存储地址可为: LOC ( a i j k) =LOC ( a000) +[ i × m×p +j ×p +k] × c 对于一般的二维数组A[c1…d1,c2…d2]而言,此处c1,c2的值不一定是 0,a i j 的地址为: LOC ( a i j ) =LOC ( a c 1 c 2 ) +[ ( i – c 1 )* ( d 2 – c 2 +1) +j – c 2 ] * c

多维数组和广义表

多维数组和广义表

an-10, an-11,…,an-1n-1的次序存放在一个含有n(n+1)/2个
元素的向量sa[]中(因下三角元素总数为n(n+1)/2)。即
将aij存放在sa[i(i+1)/2+j]中(0≤i≤n-1,0 ≤j≤i)。
VC++
7
表第 五 章
多 维 数 组 和 广 义
算 法 演
②对称矩阵中的元素aij和sa[k]之间的对应关系: 若i≥j,k=i×(i+1)/2+j 0≤k<n(n+1)/2

对于三元组表,除了描述稀疏矩阵的非零元素
外,为了运算方便,还应将矩阵的总行数、总列数
下 一
和非零元素的总数也作为三元组表的属性进行描述。
页 4、三元组表的描述
#define MaxSize 100 //三元组表空间的最大容量
返 typedef int DataType //结点类型
回 typedef struct { //三元组结点定义
和n个直接后继。
下 一
因此,多维数组的逻辑特征是:一个数据元素可能
页 有多个直接前驱和多个直接后继。
三、数组的顺序存储表示

由于计算机内存的结构是一维的,因此用内存来
回 表示多维数组,必须将数组元素按某种次序排成线
性序列后存人存储器。又由于数组一般不做插入和
VC++
删除操作,即数组一旦建立,结构中元素个数和元
按行优先顺序元素aij存放在sa[2i+j]中。
10
表第 五 章
多 维 数 组 和 广 义
算 二、稀疏矩阵的压缩存储
法 演
1、稀疏矩阵的定义:设矩阵Amn中有s个非零元素,

第五章 多维数组和广义表

第五章  多维数组和广义表

通常把与树对应的广义表称为纯表,它限制了表中成 分的共享和递归;把允许结点共享的表称为再入表;而把 允许递归的表称为递归表。它们之间的关系满足:递归表 再入表 纯表 线性表。 广义表三个特殊的基本运算:取表头GetHead(LS)、 取表尾GetTail(LS)和表长Length(LS)。 根据表头、表尾的定义可知:任何一个非空广义表的 表头是表中第一个元素,它可以是原子,也可以是子表, 而其表尾必定是子表。 2. 广义表的举例 (1)E=( ) GetHead(E)=空 GetTail(E)=( ) Length(E)=0
5.1
多维数组
1. 数组的定义 数组是由一组类型相同的数据元素构造而成的。数组元 素在数组中的相对位置是由下标确定的。 一维数组、二维数组。 二维数组可称为矩阵。 a11 Amn= a21 … am1 图5-1 a12 … a1n a22 … a2n … … … am2 … amn 二维数组结构
m维数组An1n2…nm的每个元素ai1i2…im都属于m个向量, 最多可以有m个直接前趋和m个直接后继。 如把数据元素的下标顺序变成线性表的序号,则一 维数组就是一个线性表。
3. 对角矩阵 对角矩阵中,所有的非零元素集中在以主对角 线为中心的带状区域中,即除了主对角线和主对角线 相邻两侧的若干条对角线上的元素之外,其余元素皆 为零。如图所示:
对角矩阵可按行优先顺序或对角线的顺序,将 其压缩存储到一个向量中,并且也能找到每个非零元 素和向量下标的对应关系。
5.2.2
稀疏矩阵Biblioteka 令I=max(i,j),J=min(i,j),则k和i,j的对应关系为: k=I×(I+1)/2+J 0≤k<n(n+1)/2 aij的地址计算公式: LOC(aij)=LOC(sa[0])+[I×(I+1)/2+J]×d 举例: A是4*4的对称阵,采用压缩存储方式存储,已知A00 的存储地址为1,求A32的存储地址。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第五章 多维数组和广义表 前面讨论的线性表、链表、栈和队列都是线性的数据结构,它们 的逻辑特征是:每个数据元素至多有一个直接前驱和一个直接后继。 本章要介绍的数组是指至少二维数组的多维数组,它是一种复杂的非 线性结构,它的逻辑特征是:一个数据元素可能有多个直接前驱和多 个直接后继。
5.1 多维数组 一、一维数组
k=I×(I+1)/2+J , 0≤k<n(n+1)/2。 3)对称矩阵的地址计算公式
LOC(aij)=LOC(sa[k]) =LOC(sa[0])+kd=LOC(sa[0])+(I(I+1)/2+J)d。 2、三角矩阵 1)三角矩阵的定义:把主对角线以下(不包括主对角线)的元素均为 常数c的n阶矩阵,称为上三角矩阵;把主对角线以上(不包括主对角线) 的元素均为常数c的n阶矩阵,称为下三角矩阵;上三角矩阵和下三角 矩阵统称为三角矩阵。三角矩阵中的常数c在多数情况下为0。
面。例如,二维数组Amn的按行优先存储的线性序列为: a11,a,am2,…,amn
2、 列优先顺序 将数组元素按列向量排列,第j+1个列向量紧接在第j个列向量后
面。例如,二维数组Amn的按列优先存储的线性序列为: a11,a21,…,am1,a12,a22,…,am2,……,a1n,a2n,…,amn
将下三角中的元素aij(i≥j)按线性序列a00,a10,a11,…, an-10, an-11,…,an-
1n-1的次序存放在一个含有n(n+1)/2个元素的向量sa[]中(因下三角元素
总数为n(n+1)/2)。即将aij存放在sa[i(i+1)/2+j]中(0≤i≤n-1,0 ≤j≤i)。
7
②对称矩阵中的元素aij和sa[k]之间的对应关系: 若i≥j,k=i×(i+1)/2+j 0≤k<n(n+1)/2 若i<j,k=j×(j+1)/2+i 0≤k<n(n+1)/2 令I=max(i,j),J=min(i,j),则k和i,j的对应关系可统一为:
2
二、多维数组
1、二维数组的表示 二维数组可表示成矩阵
Amn 的 aa形1211 式aa122,2
a1n a2n
矩看阵成的是每由m一个行行和向每量一组列成都的可(以列看)向成量是,一也个可a向m以1 量看a,m2成因是此由a,mnn二个维列数向组量可组以成
的(行)向量。
2、二维数组的逻辑结构
int row,col; //非零元的行号、列号 DataType v; //非零元的值 }TriTupleNode;
12
typedef struct{ //三元组表定义
TriTupleNode data[MaxSize]; //三元组表空间
int m,n,t; //矩阵总行数、总列数及非零元个r数ow col v
因此,二维数组的逻辑结构是:每个元素至多有两个直接前驱和两个
直接后继。
3
3、多维数组的逻辑结构 1)三维数组:三维数组可以看成是以二维数组为元素的向量。三维 数组的每个元素aijk至多有三个直接前驱和三个直接后继。 2)n维数组:n维数组可以看成是以n-1维数组为元素的向量。 n维数 组的每个元素至多有n个直接前驱和n个直接后继。 因此,多维数组的逻辑特征是:一个数据元素可能有多个直接前驱和 多个直接后继。 三、数组的顺序存储表示
8
2)三角矩阵的压缩存储:三角矩阵中的重复元素c可共享一个存储空 间,其余的元素正好有n(n+1)/2个,因此,三角矩阵可压缩存储到含 有n(n+1)/2+1个元素的向量sa[]中,其中c存放在向量的最后一个分量 中。 ①上三角矩阵中aij和sa[k]之间的对应关系
上三角矩阵中,主对角线之上的第i行(0≤i<n)恰有n-i个元素,按 行优先顺序存放上三角矩阵中的元素aij时:aij前有i行(从第0行到第i-1 行),一共有: (n-0)+(n-1)+(n-2)+…+(n-i+1)=i(2n-i+1)/2个元素;在第i行上,aij前 恰有j-i个元素,因此aij存放在 sa[i(2n-i+1)/2+j-i]中(0≤i≤n-1,i≤j≤n-1)。 ②下三角矩阵中aij和sa[k]之间的对应关系
由于计算机内存的结构是一维的,因此用内存来表示多维数组,必 须将数组元素按某种次序排成线性序列后存人存储器。又由于数组一 般不做插入和删除操作,即数组一旦建立,结构中元素个数和元素间 关系不再发生变化。因此,一般采用顺序存储方法表示数组,通常有 以下两种顺序存储方式。
4
1、 行优先顺序 将数组元素按行向量排列,第i+1个行向量紧接在第i个行向量后
设二维数组Amn按行优先存储,各维的下界为0,上界分别为m1,n-1,每个元素占内存的字节数为d,如果用LOC(a00)表示a00的地址, 则aij的地址为:
同理,三维数组Amnp按行优先存储,则aijk的地址为:
LOC (aij ) LOC (a00 ) (i n j) d 0 i m, 0 j n
同理可以得到,按行优先顺序存放下三角矩阵中的元素aij时,aij 存放在sa[i(i+1)/2+j]中(0≤i≤n-1, 0≤j≤i)。
9
3、对角矩阵 1)对角矩阵的定义:所有的非零元素集中在以主对角线为中心的带 状区域中,即除了主对角线和主对角线相邻两侧的若干条对角线上的 元素之外,其余元素皆为零的矩阵为对角矩阵。 2)k对角矩阵:一个满足条件若|i-j|>(k-1)/2,则aij=0的矩阵A是k对 角矩阵,其中k为奇数。特别,当k=3时,称为三对角矩阵。 3)三对角矩阵的压缩存储:三对角矩阵中非0元素正好有3n-2个,因 此,三对角矩阵可压缩存储到含有3n-2个元素的向量sa[]中。 ➢三对角矩阵中aij和sa[k]之间的对应关系
一维数组可用向量(a1,a2,…,an)的形式来表示,因此,也把一维 数组称为向量。向量中的每一个数据元素都具有统一的、相同的数据 类型,数组元素的下标一般具有固定的上界和下界,同一个数组中的 不同元素可通过下标来标识。向量的逻辑特征是:每个数据元素至多 有一个直接前驱和一个直接后继。向量是存储在计算机的连续存储空 间中,可通过数组的地址求出每个元素的地址,因此,可以随机的进 行存取。多维数组是向量的推广。
注意:C语言中的数组是按行优先顺序存储的,数组元素下标的下界 值为0。
5
四、数组元素的地址计算公式 按行优先方式顺序存储的数组,只要知道开始结点的存储地址、
多维数组的维数和各维的上下界,以及数组元素在内存中占用的字节 数,就可以求出每个元素的存储地址。因此,数组中的任一元素可以 在相同的时间内存取,即顺序存储的数组是一个随机存取结构。
LOC (aijk ) LOC (a000 ) (i n p j p k) d
0 i m,0 j n,0 k p
6
5.2 矩阵的压缩存储 一、常用矩阵的压缩存储 1、对称矩阵 1)对称矩阵的定义:如果n阶矩阵A的元素满足
,则称A为n阶对称矩阵。 2所a)ij以对只a称ji 要矩存0阵储i的,矩j压阵n缩中存上储三:角由或于下对三称角矩中阵的中元的素元,素让关每于两主个对对角称线的对元称素, 共享同一个存储空间,这样可以节约近一半的存储空间。 ①按“行优先顺序”存储下三角中的元素
稀疏矩阵进行压缩存储通常有两类方法:顺序存储和链式存储 (十字链表法)。
11
3、三元组表 若将表示稀疏矩阵的非零元素的三元组按行(或列)优先的顺序排
列(跳过零元素),则得到一个结点均为三元组的线性表,我们将该线 性表的顺序存储结构称为三元组表。
对于三元组表,除了描述稀疏矩阵的非零元素外,为了运算方便, 还应将矩阵的总行数、总列数和非零元素的总数也作为三元组表的属 性进行描述。 4、三元组表的描述 #define MaxSize 100 //三元组表空间的最大容量 typedef int DataType //结点类型 typedef struct { //三元组结点定义
元素aij前共有i行,其中非0元素共有3i-1个;第i行中前面已有i-1 个0,所以aij前非0元素有j-(i-1)个,因此aij前已有的非零元素个数 为: 3i-1+j-(i-1)=2i+j。按行优先顺序元素aij存放在sa[2i+j]中。
10
二、稀疏矩阵的压缩存储 1、稀疏矩阵的定义:设矩阵Amn中有s个非零元素,若s远远小于矩阵 元素的总数(即s<<m×n),则称A为稀疏矩阵。 2、稀疏矩阵的压缩存储
3)实现方法:
方得到法按一列:优简先单顺地稀序交存换疏储矩矩的阵阵转A的置三矩元阵组B的表三a->元da组t三a表中元br-o组>wd表和atac;ol中再的将内b->容d,ata
重排成按行优先顺序的三元组表;
13
方用法三二元:组由表于实A现的矩列阵是的B的转行置,运因算此的,算按法a:->data的列序转置,所得到 的vo转id置Tr矩an阵sMB的atr三ix元(Tr组iT表upbl-e>Tdaabtlae必*b定,T是riT按up行le优Ta先bl存e *放a)的。我们将采用 方{/法/*二a,*来b是实矩现阵。A、B的三元组表表示,求A转置为B 4)ibn-算t>pm法,q=,步aj;->骤n;:b->n=a->m; //A和B的行列总数互换 第b一->步t=:a->根t;据//A非矩零阵元的总行数数、列数和非零元总数确定B矩阵的列数、行 数i和f(b非->零t<元=0总) 数。 第q二=0步{;p:rin当tf(三"A元中组无表非非零空元(");Ae矩xit阵(0的);}非//零退元出个数不为0)时,根据A矩 阵f三or(元j=组0;表j<a的->结n;点j++空) 间//对daAta的,每将一A的列三元组表a->data置换为B的三元组 表b-f>odr(apta=。0;p<a->t;p++) //扫描A的三元组表 具列j体(0置≤ijf≤换(baa--方->>>bddn法-aa->1tt:daa)[[a,为qpta]]通..保[rcqoo过]证wl.=c从=o=Balj的=头)-{>a三至/-d>/a元d尾找taa组[t扫列pa[]表描号p.c]o是三为.rl;o按元jw的行;组三优表元先a组->存d放ata的,,找对出A所中有的列每号一 等于j的那些b三->d元at组a[,q]将.v=它a-们>d的at行a[p号].和v; 列号互换后依次放人b->data中, 即可得到B的q+按+;行优先的压缩存贮表示。 5})具体算}法:
相关文档
最新文档