/*问题及代码
*Copyright(c)2015,烟台大学计算机学院
*All right reserved.
*文件名称:稀疏矩阵的三元组表示 .cpp
*作者:李浩
*完成日期;2015年10月26日
*版本号;v1.0
*
*问题描述: 将稀疏数组中的非零元素用三元组的方式表示出来
*输入描述:稀疏数组
*程序输出:以行列数三元组表示,以列行数转置后的三元组表示
*/
#include <stdio.h>
#include "tup.h"
int main()
{
TSMatrix t,tb;
int x,y=10;
int A[6][7]=
{
{0,0,1,0,0,0,0},
{0,2,0,0,0,0,0},
{3,0,0,0,0,0,0},
{0,0,0,5,0,0,0},
{0,0,0,0,6,0,0},
{0,0,0,0,0,7,4}
};
CreatMat(t,A);
printf("b:\n");
DispMat(t);
if (Assign(t,x,2,5)==true) //调用时返回true
printf("Assign(t,x,2,5)=>x=%d\n",x);
else //调用时返回false
printf("Assign(t,x,2,5)=>参数错误\n");
Value(t,y,2,5);
printf("执行Value(t,10,2,5)\n");
if (Assign(t,x,2,5)==true) //调用时返回true
printf("Assign(t,x,2,5)=>x=%d\n",x);
else //调用时返回false
printf("Assign(t,x,2,5)=>参数错误\n");
printf("b:\n");
DispMat(t);
TranTat(t,tb);
printf("矩阵转置tb:\n");
DispMat(tb);
return 0;
}
运行结果
知识点总结
由于稀疏数组中的有效数字很少,所以用三元组的方式来表示,使得哪一行哪一列中的哪一个数表示的更加清晰,这个程序的重点在于转置,将行列倒过来,数字不变,只需要找出适合这个数的新的行列表达方式即可。
学习心得
想起大一学C++的时候也做过矩阵转置的问题,回去看看原来是怎么做的。