带行表的三元组表表示稀疏矩阵

来源:百度知道 编辑:UC知道 时间:2024/06/23 12:54:25
假设以带行表的三元组表表示稀疏矩阵,则和下列行表
02335 对应的稀疏矩阵是( )
a:
0,-8,0,6
7,0,0,0
0,0,0,0
-5,0,4,0
0,0,0,0
b:
0,-8,0,6
7,0,0,0
-5,0,4,0
0,0,0,0
0,3,0,0
c:
0,-8,0,6
0,0,0,0
0,2,0,0
-5,0,4,0
0,0,0,0
d:
0,-8,0,6
0,0,0,0
7,0,0,0
-5,0,4,0
0,3,0,0

在下知道三元组但不了解带行表的三元组,请知道的帮忙解释下选择什么,并说说为什么 谢谢!

这么久了还来解答确实不好意思,我是自学数据结构的,在做试题的时候看到这一题,当时也不知道什么是带行表的三元组表,翻阅了书也没有详细的讲解,查看了很多网站也只有一些笼统的解答。所以现在把自己的解题思路写一写,让自学的朋友也能看到吧。
墨乁迹的解答是正确的,当中最重要的一条信息是:② RowTab[i](0≤i≤m-1)表示第i行之前的所有行的非零元数。
A答案:
第一行( RowTab[0])由于是第一行,之前没有非零元素,所以对应为0;
第二行( RowTab[1])之前只有第一行,非零元素有两个,-8和6,所以对应为2;
第三行( RowTab[2])之前有第一、二行,非零元素有两个,-8、6和7,所以对应为3;
好了,说得那么明白,大家应该就懂了,四五行就自己写了,其实就是不用算最后一行的非零元素。答案就是02335。大家可以做做BCD的答案,和墨乁迹给出的答案一样。

答案应该选A

带行表的三元组表
 为了方便某些矩阵运算,在按行优先存储的三元组表中,加入一个行表来记录稀疏矩阵中每行的非零元素在三元组表中的起始位置。这就是带行表的三元组表。
(1)类型描述
#define MaxRow l00 //在三元组表定义前加入此最大行定义
typedef struct {
TriTupleNode data[MaxSize];
int RowTab[MaxRow];//行表,应保证m≤MaxRow
int m,n,t;
}RTriTupleTable;

(2)带行表的三元组表的操作
①对于任给行号i(0≤i≤m-1),能迅速地确定该行的第一个非零元在三元组表中的存储位置为RowTab[i]
② RowTab[i](0≤i≤m-1)表示第i行之前的所有行的非零元数。
③第i行上的非零元数目为RowTab[i+1]-RowTab[i](0≤i≤m-2)
④最后一行(即第m-l行)的非零元数目为t-RowTab[m-1](t为矩阵的非零元总