下载此文档

数据结构第11讲 稀疏矩阵与广义表 c.ppt


文档分类:IT计算机 | 页数:约60页 举报非法文档有奖
1/60
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/60 下载此文档
文档列表 文档介绍
第5章数组和广义表
数组的定义
数组的顺序表示和实现
矩阵的压缩存储
特殊矩阵
稀疏矩阵
广义表的类型定义
广义表的存储表示和实现
稀疏矩阵
假设 m 行 n 列的矩阵含 t 个非零元素,则称 d= t/(m×n)为稀疏因子,通常认为d≤。
以常规方法,即以二维数组表示高阶的稀疏矩阵时产生的问题:
(1)零值元素占的空间很大
(2)计算中进行了很多和零值的运算
解决问题的原则:
尽可能少存或不存零值元素
尽可能减少没有实际意义的运算
运算方便
即:
尽可能快地找到下标值(i,j)对应的非零值元
尽可能快地找到同一行或同一列的非零值元
抽象数据类型稀疏矩阵的定义:
ADT SparseMatrix {
数据对象:D={ ai,j | i=1,2,…,m;j=1,2,……n;
ai,j∈ElemSet,m和n分别称为矩阵的行数和列数
数据关系:R={Row,Col}
Row = { <ai,j,ai,j+1> | 1≤i≤m,1≤j≤n-1 }
Col = { <ai,j,ai+1,j> | 1≤i≤m-1,1≤j≤n }
基本操作:
} ADT SparseMatrix
稀疏矩阵的表示方法:
(1)顺序存储结构——三元组表示法
(2)行逻辑链接的顺序表
(3)数组的链接存储结构——十字链表表示法
7 0 0 0 15 0
0 -4 0 0 0 0
0 0 0 -1 0 0
-2 0 0 0 0 21
M=
21
6
4
-2
1
4
-1
4
3
-4
2
2
15
5
1
7
1
1




行数mu=4, 列数nu=6, 非零元个数tu=6
0
0
三元组顺序表存储表示
#define MAXSIZE 12500
// 假设非零元个数的最大值为12500
typedef struct {
int i, j; // 该非零元的行下标和列下标
ElemType e;
} Triple;
typedef struct {
Triple data[MAXSIZE + 1];
// 非零元三元组表,data[0]未用
int mu,nu,tu; // 矩阵的行数、列数和非零元个数
} TSMatrix;
如何求转置矩阵?
转置运算是一种简单的矩阵运算。对于一个 m×n 的矩阵 M,它的转置矩阵 T 是个 n×m 的矩阵,且T(i,j) = M(j,i),1≤i≤n,1≤j≤m。
7 0 0 0 15 0
0 -4 0 0 0 0
-2 0 0 0 0 21
0 0 0 -1 0 0
21
6
4
-1
4
3
-4
2
2
15
5
1
7
1
1
-2
1
4
7 0 0 -2
0 -4 0 0
0 0 -1 0
0 0 0 0
15 0 0 0
0 0 0 21
-1
3
4
7
1
1
-2
4
1
-4
2
2
15
1
5
21
4
6
?
M
T
用常规的二维数组表示时的算法
其时间复杂度为: O(mu×nu)
for (col=1; col<=nu; ++col)
for (row=1; row<=mu; ++row)
T[col][row] = M[row][col];

数据结构第11讲 稀疏矩阵与广义表 c 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数60
  • 收藏数0 收藏
  • 顶次数0
  • 上传人endfrs
  • 文件大小887 KB
  • 时间2018-01-19