数据结构第五章讲义.
数据结构第五章
b1 b2 b3 b4
bk
… … bm
数据结构 – Data Structures
5.3.1 三角矩阵的压缩存储
推广至一般情况,n*n的三角矩阵以列为主 序压缩存储 a, b
00 1
a0,0 a0,1 a0,2 … … … a0,n-2 a0, n-1 a1,1 a1,2 … … … a1,n-2 a1, n-1 … … … ai,i … ai,j … ai, n-1 0 … … … an-1, n-1 k=? m=?
LOC(aij)=LOC(a11)+[(j-1)*m+i-1]*d
6
数据结构 – Data Structures
数组存储的特点
只要知道开始结点的存放地址(即基地址)、维 数和每维的上、下界,以及每个数组元素所占用 的单元数,就可以将数组元素的存放地址表示为 其下标的线性函数。因此,数组中的任一元素可 以在相同的时间内存取,即顺序存储的数组是一 个随机存取结构。
i 1 1 2 2 3 3 4 6
j 3 6 1 5 1 4 6 3
v -3 15 12 18 9 24 -7 14
25
数据结构 – Data Structures
2
3 4
1
3 4
0
1 4
0
0 1
0
0
0
0
1
0
4
1
(a) 下三角矩阵
(a) 上三角矩阵
11
数据结构 – Data Structures
5.3.1 三角矩阵的压缩存储
例如:一个4*4的三角矩阵。
1 2 8 1 8 8 8 8
1
9 9 9
数据结构课件第5章-PPT文档资料
第5章 串
5.2.2
和线性表的链式存储结构相类似,串的存储结构也可采用链 式存储结构,即用线性链表来存储串值。在这种存储结构下,存 储空间被分成一系列大小相同的结点,每个结点用data域存放字 符, link域存放指向下一个结点的指针。 这样, 一个串就可以用 一个线性链表来表示。
private { private declaration }
public { public declaration }
end;
第5章 串
这一段程序可看作一个字符串:“type private
Tstring = class
{private declaration } public {public declaration } end;
”, 其中“ ”表示换行符。Delphi的源程序编辑器提供了字符 串的查找与替换功能。 选择“Search”菜单中的“Replace”项, 在对话框中输入要查找字符串‘private’及替代串‘protected’, 如 图 5.1 所 示 , 则 执 行 命 令 后 以 上 程 序 中 的 关 键 字 ‘ private’ 被 ‘protected’替代。
第5章 串 串中任意个连续的字符组成的子序列称为该串的子串。包含 子串的串称为主串。通常称字符在序列中的序号为该字符在串中 的位置。子串在主串中的位置可以用子串的第一个字符在主串中 的位置来表示。
例如, 假设a、 b、 c、 d为如下的四个串:
a =‘Data’
b =‘Structure’
c =‘Data Structure’ d =‘Data Structure’
const maxlen = 允许的串最大长度;
07《数据结构》第五章
3
本章课程内容(第五章 数组和广义表)
5.1 数组的类型定义 5.2 数组的顺序表示和实现
5.3 矩阵的压缩存储
矩阵的压缩存储
若i≥j,则aij在下三角形中。 aij之前的i行(从第0行到第i-1行) 一共有1+2+…+i=i(i+1)/2个元素,在第i行上, aij之前恰有j个元 素(即ai0,ai1,ai2,…,aij-1),因此有:
k=i×(i+1)/2+j
0≦k<n(n+1)/2
若i<j,则aij是在上三角矩阵中。因为aij=aji,所以只要交换上述 对应关系式中的i和j即可得到:
数组的类型定义
基本操作: InitArray (&A, n, bound1, ..., boundn) 操作结果:若维数 n 和各维长度合法,则构造相应的数组 A。 DestroyArray (&A) 初始条件:数组 A 已经存在。
操作结果:销毁数组 A。
Value (A, &e, index1, ..., indexn) 初始条件:A 是 n 维数组,e 为元素变量,随后是 n 个下标值。 操作结果:若各下标不超界,则e赋值为所指定的A的元素值,并返 回OK。 Assign (&A, e, index1, ..., indexn) 初始条件:A 是 n 维数组,e 为元素变量,随后是 n 个下标值。
………………..
an-1 0 a n-1 1 a n-1 2 …a n-1 n-1
数据结构讲义5
k=i*(i+1)/2+j 0≦k<n(n+1)/2 若i<j,则aij是在上三角矩阵中。因为aij=aji,所以只要交 换上述对应关系式中的i和j即可得到: k=j*(j+1)/2+i 0≦ k<n(n+1)/2 即:
第五章数组和广义表51数组的定义52数组的顺序表示和实现53矩阵的压缩存储531特殊矩阵532稀疏矩阵54广义表的定义55广义表的存储结构数组和广义表可看成是一种特殊的线性表其特殊在于表中的数据元素本身也是一种线性表
数据结构
(Data Structure)
柳 青
Email: liuqing@
i(行)
2014-5-7
j(列)
v(值)
15
5.3 矩阵的压缩存储
例如,三元组表:((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)这一对行、列值便可作为下列矩阵M的另一种描 述。而由上述三元组表的不同表示方法可引出稀疏矩阵不
2014-5-7 17
5.3 矩阵的压缩存储
矩阵的转置运算
设有一个m×n的矩阵A,则它的转置B是一个n×m的矩阵 且:a[i][j]=b[j][i],1≦i≦m,1≦j≦n,
LOC(i1 , i2 ,, in ) LOC(0,0,,0)
上述讨论均假设数组各维的下界是0,更一般的二维数组
数据结构(第5章)
第5章多维数组和广义表前三章讨论的线性表、栈、队列和串都是线性的数据结构,它们的逻辑特征是:每个数据元素至多有一个直接前趋和直接后继。
本章介绍的多维数组和广义表是一种复杂的非线性结构。
它们的逻辑特性是:一个数据元素可能有多个直接前趋和多个直接后继。
5.1 多维数组数组是我们最熟悉的数据类型,在早期的高级语言中,数组是惟一可供使用的结构类型。
由于数组中各元素具有统一的类型,并且数组元素的下标一般具有固定的上界和下界,因此数组的处理比其它复杂的结构更为简单。
多维数组是向量的推广。
例如,二维数组:可以看成是由m个行向量组成的向量,也要以看成是n个列向量组成的向量。
二维数组中的每个元素a ij均属于两个向量:第i行的行向量和第j列的列向量。
也就是说,除边界外,每个元素a ij都恰好有两个直接前趋和两个直接后继结点:行向量上的直接前趋a ij-1和直接后继a ij+1,列向量上的直接前趋a i-lj和直接后继a i+lj。
并且二维数组仅有一个开始点a11,它没有前趋;仅有一个终端结点a mn,它没有后继。
另外边界上的结点(开始结点和终端结点除外)只有一个直接前趋或者只有一个直接后继,即:除开始结点a11外,第一行和第一列上的结点:a lj(j=2,…,n)和a il(i=2,…,m)都只有一个直接前趋;除终端点结点a mn外,第m行和第n列上的结点a mj(j=1,…,n-1)和a in(i=1,…,m-1)都只有一个直接后继。
同样,三维数组A mnp中的每个元素a ijk都属于三个向量,每个元素最多可以有三个直接前趋和三个直接后继。
依次类推,m维数组A n1n2…n m的每个元素a i1i2…i m都属于m个向量,最多可以有m个直接前趋和m个直接后继。
由于计算机的内存结构是一维的,因此用一维内存来表示多维数组,就必须按某种次序将数组元素排成一个线性序列,然后将这个线性序列顺序放在存储器中。
又由于对数组一般不做插入和删除操作,也就是说,数组一旦建立,结构中的元素个数和元素间的关系就不再发生变化。
数据结构(C语言)第五章
假设以一维数组sa[0..n(n+1)/2-1]作为n阶对称矩阵A的
存储结构,则sa[k]和矩阵元aij之间存在着一一对应的关系。
0
1
2
3
4
5
6
7
8
……
n(n+1)/2-1
sa a00 a10 a11 a20 a21 a22 a30 a31 a32
an-1n-1
27
若i≥j,则aij在下三角形中。aij之前的i行(从第0 行到第i-1行)共有1+2+…+i=i*(i+1)/2个元素,在第i行 上,aij之前恰有j个元素(即ai0,ai1,…,ai,j-1 ),因此aij之 前共有k个元素:
=2000+(3*4+2)*4 =2056
21
例2:二维数组A中,每个元素的长度为3个字节,行下标i 从0到7,列下标j从0到9,从首地址SA开始存放在存储 器内,该数组按列存放时,元素A[4][7]的起始地址 为 。
A. SA+141 C. SA+222 B. SA+180 D. SA+225
解:LOC(a47)=LOC(a00)+(j *m+ i)*L = SA+(7*8+4)*3
以行序为主序(行优先顺序) 以列序为主序(列优先顺序)
13
一、以行序为主序:
1.存放规则 行优先顺序也称为低下标优先或右边下标优先于左 边下标。具体实现时,按行号从小到大的顺序,先将第 一行中元素全部存放好,再存放第二行元素,第三行元 素,依次类推……
BASIC语言、PASCAL语言、C/C++语言都是按行优先
数据结构第五讲
6. Status GetTop(SqStack S, SElemType &e)
//若栈非空,则e用返回S的栈顶元素,并返回OK,否则返回 ERROR; if(S.top==S.base) return ERROR; e=*(S.top-1) ;
return OK;
队列的基本概念
一. 队列的定义
队列 简称队 。是一种只允许在表的一端
进行插入操作,而在表的另一端进行删除操作 的线性表。允许插入的一端称为队尾,队尾元 素的位置由rear指出; 允许删除的一端称为队 头, 队头元素的位置由front指出。
先进先出
a
b c
d e
f
队头元素 队头元素
队头元素
27. 循环队列存储在数组A[0..m]中,则入队时的操作为( )。 D A. rear=rear+1 B. rear=(rear+1) mod (m-1) C. rear=(rear+1) mod m D. rear=(rear+1)mod(m+1)
28. 若用一个大小为6的数组来实现循环队列,且当前rear和front 的值分别为0和3,当从队列中删除一个元素,再加入两个元素后, rear和front的值分别为多少?( ) B A. 1和 5 B. 2和4 C. 4和2 D. 5和1
20. 表达式3* 2^(4+2*2-6*3)-5求值过程中当扫描到6时,对象栈和算 符栈为( D),其中^为乘幂 。 A. 3,2,4,1,1; *^(+**^(B. 3,2,8;(*^C. 3,2,4,2,2; *^(-
D. 3,2,8;
21. 设计一个判别表达式中左,右括号是否配对出现的算法,采用 (D )数据结构最佳。
数据结构第五章
PrintSMatrix(M)
初始条件:稀疏矩阵M存在 操作结果:输出稀疏矩阵M CopySMatrix(M,&T) 初始条件:稀疏矩阵M存在
操作结果:由稀疏矩阵M复制得到T
25
AddSMatrix(M,N,&Q)
…
an-1,0
…
an-1,n-1
存贮地址计算公式: Loc(aij)= Loc(a00)+ [i*(i+1) /2+j]*L
20
2、三角矩阵 所谓下(上)三角矩阵是指矩阵的上(下)三角 (不包括对角线)中的元均为常数c或零的n阶矩阵。 对于三角矩阵,则除了和对称矩阵一样,只存储 其下(上)三角中的元之外,再加一个存储常数 c的 存储空间即可。
第五章 数组和广义表
1
※ 教学内容:
数组的存储结构;稀疏矩阵的表示及操作的实现;广 义表的定义和存储结构;广义表的递归算法;
※
教学重点:
数组在以行为主的存储结构中的地址计算方法;矩阵 实现压缩存储时的下标变换; 理解稀疏矩阵的两种存储方式的特点和适用范围,领 会以三元组表示稀疏矩阵时进行运算采用的处理方法; 广义表的定义及其存储结构,学会广义表的表头,表 尾分析方法;学习编制广义表的递归算法。
a0,0 a0,1 a0,2 a1,0 a1,1 a1,2
a0,0 a1,0 a0,1 a1,1 a0,2 a1,2
L
二维数组A[b1,b2]中任一元素ai,j 的存储位置 LOC(i,j) = LOC(0,0) + (b1×j+i)× L 称为基地址或基址。
数据结构 Chapter5
1
2
3
45 67
8 9 10
Department of Computer Science & Technology, Nanjing University
fall
DATA STRUCTURES
(4)若结点编号i为奇数,且i!=1,则它的左兄 弟为结点i-1。
(5)若结点编号i为偶数,且i!=n,则它的右兄 弟为结点i+1。
Tree ( ); ~Tree ( ); position Root ( ); BuildRoot ( const Type& value ); position FirstChild ( position p ); position NextSibling ( position p ); position Parent ( position p ); Type GetData ( position p );
DATA STRUCTURES
fall
5.2 二叉树 (Binary Tree) 二叉树的定义
DATA STRUCTURES
一棵二叉树是结点的一个有限集合,该 集合或者为空,或者是由一个根结点加 上两棵分别称为左子树和右子树的、互 不相交的二叉树组成。
Department of Computer Science & Technology, Nanjing University
fall
DATA STRUCTURES
定义1 满二叉树 (Full Binary Tree)
如果二叉树中所有分支结点的度数都为2, 且叶子结点都在同一层次上,则称这类二 叉树为满二叉树。
定义2 完全二叉树 (Complete Binary Tree)
数据结构讲义第5章-数组和广义表
5.4 广义表
5)若广义表不空,则可分成表头和表尾,反之,一对表头和表尾 可唯一确定广义表 对非空广义表:称第一个元素为L的表头,其余元素组成的表称 为LS的表尾; B = (a,(b,c,d)) 表头:a 表尾 ((b,c,d)) 即 HEAD(B)=a, C = (e) D = (A,B,C,f ) 表头:e 表尾 ( ) TAIL(B)=((b,c,d)),
5.4 广义表
4)下面是一些广义表的例子; A = ( ) 空表,表长为0; B = (a,(b,c,d)) B的表长为2,两个元素分别为 a 和子表(b,c,d); C = (e) C中只有一个元素e,表长为1; D = (A,B,C,f ) D 的表长为4,它的前三个元素 A B C 广义表, 4 A,B,C , 第四个是单元素; E=( a ,E ) 递归表.
以二维数组为例:二维数组中的每个元素都受两个线性关 系的约束即行关系和列关系,在每个关系中,每个元素aij 都有且仅有一个直接前趋,都有且仅有一个直接后继. 在行关系中 aij直接前趋是 aij直接后继是 在列关系中 aij直接前趋是 aij直接后继是
a00 a01 a10 a11
a0 n-1 a1 n-1
a11 a21 ┇ a12 a22 ┇ ai2 ┇ … amj … amn … aij … ain … … a1j a2j … … a1n a2n β1 β2 ┇ βi ┇ βm
数据结构讲义5
将稀疏矩阵中的每个非零元素表示为:
(行号,列号,非零元素值)——三元组(3-tuple, triple)
c 定义三元组: row(行) ol(列) item(值)
typedef struct {
int row, col; ElemType item }Triple;
26
//行号,列号 //非零元素值
第l1行 第l1+1行
…
al1l2
…
al1h2 a(l1+1)l2
a(l1+1)h2
……
aij
…
ah1 h2
Loc(al1l2)
(i -l1)×(h2 -l2+1)+(j -l2)个元素
Loc(aij)
Loc(aij)=Loc(al1l2)+((i-l1)×(h2-l2+1)+(j-l2))×c
按列优先存储的寻址方法与此类似。
数据结构
第五章 数组和广义表
• 5.1 数组的定义 • 5.2 数组的顺序表示和实现 • 5.3 矩阵的压缩存储 5.3.1 特殊矩阵 5.3.2 稀疏矩阵 • 5.4 广义表的定义 • 5.5 广义表的存储结构
1
数据结构
5.1 数组的定义
数组的定义
数组是由一组类型相同的数据元素构成的有序集 合,每个数据元素称为一个数组元素(简称为元 素),每个元素受n(n≥1)个线性关系的约束,每 个元素在n个线性关系中的序号i1、i2、…、in称为 该元素的下标,并称该数组为 n 维数组。
27
数据结构
5.3 矩阵的压缩存储—稀疏矩阵
稀疏矩阵的压缩存储——三元组顺序表 采用顺序存储结构存储三元组表
15 0 0 A= 0 91
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算地址 的意义:
只要计算出任一数组元素的地址, 就能对其轻松地进行读写操作!
13
二、N维数组的顺序存储表示
#define MAX_ARRAY_DIM 8 //假设最大维数为8 typedef struct{ ElemType *base; //数组元素基址 int dim; //数组维数 int *bound; //数组各维长度信息保存区基址 int *constants ; //数组映像函数常量的基址 }Array;
即Ci信息保存区
数组的基本操作函数说明(有5个) (请阅读教材P93-95)
14
第五章 数组和广义表
数组的定义
数组的顺序表示和实现
矩阵的压缩存储
广义表的定义 广义表的存储结构
!
一、对称矩阵压缩
对称矩阵
定义:若一个n阶方阵A中元素满足下列条件:aij=aji 其中 0 ≤i, j≤n-1 , 则称A为对称矩阵。
1
A=
11 0
5 7
0 0
0 0 6 0
12 0 0 0 0 5
0 32 4 2 0 0 4 3
压缩存储原则:在一个n×n的三对角矩阵中,只 有n+n-1+n-1个非零元素,故只需3n-2个存储单元 即可,零元已不占用存储单元。故可将n×n三对角 矩阵A压缩存放到只有3n-2个存储单元的s向量中。
第五章 数组和广义表
数组的定义
数组的顺序表示和实现
矩阵的压缩存储
广义表的定义 广义表的存储结构
!
一、 数组的定义
数组: 由一组名字相同、下标不同的变量构成 ① 数组中各元素具有统一的类型; ② 数组元素的下标一般具有固定的上界和下界,即数组一 旦被定义,它的维数和维界就不再改变。 ③数组的基本操作比较简单,除了结构的初始化和销毁之 外,只有存取元素和修改元素值的操作。因此一般选 用顺序存储。
3 1 9 3 4 24 5 3 14
求 三 元 组 表 T.data
算法中主要程序段:
q=1; for(col=1;col<=M.nu;col++) for(p=1;p<=M.tu;p++) { if(M.data[p].j==col) { T.data[q].i=M.data[p].j; T.data[q].j=M.data[p].i; T.data[q].e=M.data[p].e; q++; } }
四、稀疏矩阵压缩存储
稀疏矩阵
定义:非零元较零元少,且分布没有一定规律的矩阵
0 12 9 0 0 0
0
-3 0
0
0 0
0
0 24
0
0 0
0
14 0
0
0 0
0 18
0
0
0
0
压缩存储原则:只存储非零元。
0 12 0 -3 0 0 0 0 9 0 0 24 0 0 0 0 0 0 0 0 14 0 0 0 0 0 0 0
1
A=
0
0 0
7 32
0 0
0 4
12 0
9 0 5 11
压缩存储原则:下三角矩阵的压缩存放与对称矩 阵存放类似,但必须多一个存储单元存放上三角 部分元素,使用的存储单元数目为n(n+1)/2+1。
0
0 S 1 12 0 9 1 2 3 4
1 A=
0
0 0 7 32
0 0 0 4
12 0 9 0 5 11
8
2m-1 ……
m*n-1
3.任一元素的地址计算(意义:数组中的任一元素可随机存取): 已知三要素 ac1,c2 … ac1,d2 ①开始结点的存放地址(即基地址) A = mn … aij … ②维数和每维的上、下界; ad1,c2 … ad1,d2 ③每个数组元素所占用的单元数 二维数组地址计算通式:设一般的二维数组是A[c1..d1, c2..d2] 则行优先存储时的地址公式为: LOC(aij)=LOC(ac1,c2)+[(i-c1)*(d2-c2+1)+j-c2)]*L
Amn
a0,n 1 ... ... a1,n 1 ... ... ... ... ... am 1,n 1
N维数组的特点: n个下标,每个元素受到n个关系约束
一个n维数组可以看成是由若干个n-1维数组组成的线性表。
3
二、 数组的运算
给定一组下标,存取相应的数据元素; 给定一组下标,修改数据元素的值.
数组基址
aij之前的
行数
总列数,即 第2维长度
aij本行前面
的元素个数
单个元 素长度
则列优先存储的通式为: LOC(aij)=LOC(ac1,c2)+[(j-c2)*(d1-c1+1)+i-c1)]*L
9
例1〖软考题〗:一个二维数组A,行下标的范围是1到6,列
下标的范围是0到7,每个数组元素用相邻的6个字节存储,存 储器按字节编址。那么,这个数组的占 288 个字节。 答: Volume=m*n*L=(6-1+1)*(7- 0 +1)*6=48*6=288
1 12 A= 12 0 9 0 5 11 9 5 7 32 0 11 32 4
压缩存储原则:对称的两个元素可以共用一个存 储单元,只需存放主对角线及主对角线以下的元 素,这样仅需 n(n+1)/2个存贮单元,将近节约一 半存贮单元。 S
0
1 12 A= 12 0
9 9 5 5
9 5
7 7
0 11
2一维Biblioteka 组的特点: 二维数组的特点: a00 a10 ... am 1, 0 a01 a11 ... am 1,1 ... ...
1个下标,ai 是ai+1的直接前驱 2个下标,每个元素ai,j受到两个关系 (行关系和列关系)的约束: 一个m×n的二维数组可以 看成是m行的一维数组,或 者n列的一维数组。
i 1 3 3 4 5 j 3 1 e 9 ij互换 -3 i 3 1 5 3 2 j 1 3 e 9 -3
i
1 2 2
j e
3 1 5 -3 12 18
5 14 3 24 2 18
3 14 4 24 5 18
3
3
1
4
9
24
5
3
14
答:肯定不正确!
转置运算的主要三个操作:
T.data[].i=M.data[].j; T.data[].j=M.data[].i; T.data[].e=M.data[].e;
12
例4:【考研资格考试】假设有三维数组A7×9×8,每个元素
用相邻的6个字节存储,存储器按字节编址。已知A的起始存 储位置(基地址)为1000,元素A[5][3][6]的第一个字节地址 为多少? 答: 元素A[5][3][6]的第1个字节地址= 1000 +(5*9*8+3*8+6)*6=3448
6
1.以行序为主序
0 a00 a01
1 2
…… n-1 n …… 2n-1 …… m*n-1
a02
a0,n-1 a10
第0行
第1行
a1,n-1 am-1,n-1
7
2.以列序为主序
0 1 2 …… m-1 m …… Am-1,0 a01 a00 A10 A20
第0列
第1列
Am-1,-1
am-1,n-1
3 1 5 1 -3 12 18 9
T
已知 三 元 组 表 M.data
1 3
3 1
9 -3
3 4 5
5 14 3 24 2 18
?
2 2 3
3
5
4
3
24
14
求 三 元 组 表 T.data
28
若采用三元组压缩技术存储稀疏矩阵,只要把每 提问:
个元素的行下标和列下标互换,就完成了对该矩 阵的转置运算,这种说法正确吗?
4
第五章 数组和广义表
数组的定义
数组的顺序表示和实现
矩阵的压缩存储
广义表的定义 广义表的存储结构
!
一、次序约定
1.以行序为主序
存放规则:具体实现时,按行号从小到大的顺序,先将第 一行中元素全部存放好,再存放第二行元素,第三行元素, 依次类推 …… 在BASIC语言、 PASCAL语言、 C/C++语 言等高级语言程序设计中,都是按行优先顺序存放的。
11
N维数组任一元素的地址计算 低维优先的地址计算公式:
Loc(j1,j2,…jn)=LOC(0,0,…0)+
数组基址
C j
i 1
n
i i
其中Cn=L, Ci-1=bi×Ci, 1<i≤n
每个元素长度 第i维长度
前面若干元素占用 的地址字节总数
与所存元素个数有关的系数, 可用递推法求出
三维数组且列优先时的元素地址 要会计算!
5
7 0 11 32 4
5
6 7 8 9 10
S与A的对应关系如下:
i(i 1) 2 j k n(n 1) 2
当i j 当i j
思考一下:上三 角矩阵A压缩到 S后的对应关系 如何?
三、对角矩阵压缩
对角矩阵
定义:若矩阵中所有非零元素都集中在以主对角线为中 心的带状区域中,区域外的值全为0,则称为对角矩阵。 常见的有三对角矩阵、五对角矩阵、七对角矩阵等。
举例:稀疏矩阵的转置运算
目的: 0 12 9 0 0 0
M
0 0 0 0 -3 0 0 0 0 0 24 0 0 18 0 0 0 14 0 0 0 0 0 0 转置