你还能找到除此之外关于稀疏矩阵两种转置更细致的注释和能实现的代码嘛?
#include#include //malloc需要的头文件 using namespace std; #define MAX 100 //定义的稀疏矩阵中最多只能有100个数字 ,但是好像本程序并没有用到 #define R 4//定义行的元素数 #define C 4//定义列的元素数 typedef struct//每个稀疏矩阵的一个行 { int row;//行号 int col;//列号 int e;//元素值 }Node; //书上说不用内个第一行然后书上又把MAX+1了,我就很搞不懂为啥子,那你都说是在记录它的行数和列数了还加1是为什么? //简直是大无语事件,我不管, 我就不按那样写,我知道是什么意思就行了,具体的实现方式就可能会稍微有点不同 typedef struct { int rows;//行 int cols;//列 int sumele;//元素总的个数 Node data[MAX]; //就是用来存储的每一行的元素的信息 }Matrix; void create(Matrix& a,int b[R][C]);//这个为求简便我直接把一个完整的数组放进主函数了, // 然后此函数就是把一个函数体转换成稀疏矩阵 void OutPut(Matrix a); void zhuanzhi01(Matrix a);//普通的转置方法 void zhuanzhi02(Matrix a);//快速转置 int main(void) { //为了简单,我直接把一个数组写出来了 int a1[4][4] = { { 1, 0, 3, 0 }, { 4, 0, 0, 0 }, { 5, 0, 0, 0 }, { 6, 0, 0, 9 } }; Matrix a; //创建一个稀疏矩阵 create(a,a1);//注意二维数组作为函数参数进行传递时,也是传递的是地址,但是在函数体里是这种格式 // 尽量把数组的R/C写上,书上说有的行其实是可以不写的,但建议写上 void hanshu(a[R][C]) cout<<"稀疏矩阵的第一种的转置后的结果如下"<



