问答题 以三元组表存储的稀疏矩阵A、B非零元个数分别为m和n。试用类Pascal语言编写时间复杂度为O(m+n)的算法将矩阵B加到矩阵A上去。A的空间足够大,不另加辅助空间。要求描述所用结构。【北京工业大学1997三(10分)】
【正确答案】正确答案:设稀疏矩阵的非零元素的三元组以行序为主存储在三元组表中。为使时间复杂度为O(m+n)。因此需从两个三元组表的最后一个元素开始相加,结果非零元素放在A矩阵三元组表的第m+n一1位置上。矩阵的相加是对应元素的相加:若行号不等,则行号大者是结果矩阵中的元素;若行号相同,则列号大者是结果矩阵中的元素;若行号列号相同,但对应元素值之和为零,不予存储,否则,作为新三元组存到三元组表中。结果的三元组至多是m+n个非零元素。最后若发生对应元素相加和为零的情况,对三元组表中元素要进行整理,以便使第一个三元组存放在下标0的位置上。
【答案解析】