在带状矩阵A中,i – j > k或 ③ 时,A[ i , j ] = 0 。 对于带状区以外的0元素可不必存储,而只存储带状区中的元素。带状区中有 ④ 个元素,但为了方便起见,每行当作2k+1个元素来存 储,此时存储的元素个数为 (2k+1)×n个。 【参考答案】:
① i×(i-1) / 2 + j
② (n+(n-i+1))×(i-1) + (j-i+1) ③ j - i > k
④ n×n – (n-k)×(n–k–1)
§5.2 稀疏矩阵
大多数元素的值为零的矩阵称为稀疏矩阵,为了节省存储空间,可以采取三元组或十字链表等方法来存储。 §5.2.1 三元组表示法
三元组表示法是用三元组(i , j , v)表示矩阵的每个非零元素。
第一行的i , j , v分别表示矩阵A的行数、列数、非零元素个数,第二行开始的 i , j , v分别表示矩阵A中每个非零元素的行下标、列下标、元素的值。 【例5.2_1】
15 0 0 22 0
A =
-15
0 11 3 0 0 0 0 0 0 -6 0 0 0 0 0 0 0 0 91 0 0 0 0 0 0 0 28 0 0 0
T =
6 6 8 1 1 15 1 4 22 1 6 -15 2 2 11 2 3 3 3 4 -6 5 1 91 6 3 28
§5.2.2三元组矩阵转置
对矩阵的运算有许多,如两个矩阵相加、相乘、转置……等。转置是一种简单的矩阵运算,对于一个m×n的矩阵M,它的转置矩阵N是一个n×m的矩阵,且M(i , j)=N(j , i)。
【例5.2_2】
1 4
1 2 3
M= N= 2 5
4 5 6 3 6
这里只讨论三元组的转置算法。 三元组的转置只需做到:
(1)将三元组中的行列值相互交换; (2)将i、j相互调换; (3)重排三元组中的次序