具体什么是稀疏矩阵,可以参见下面博客
http://blog.youkuaiyun.com/tiredoy/article/details/24435443
http://c.biancheng.net/cpp/html/969.html
下面是参考了部分博客后,自己实现的代码,其中有好多问题,在调试解决的过程中,解决了问题,并收获了很多。参见具体注释。
#include <stdio.h>
#include <stdlib.h>
#define SMAX 1024 /*一个足够大的数*/
//typedef datatype int;
/*
该程序的意图是,输入一个稀疏矩阵的三元组表示的数据,根据其三元组表示形式求其转置
*/
//表示每个三元组元素的结构体
typedef struct{
int i,j; //元素的行和列信息
int v;<span style="white-space:pre"> </span>//存储 i 行 j 列上的元素的值
}Node;
//表示某个三元组的结构体
typedef struct{
int m,n,len; //该三元组存储的矩阵 有 m 行 n 列
Node data[SMAX];<span style="white-space:pre"> </span>// 该三元组中 最多有 SMAX 个节点
}SMatrix;
//通过键盘输入的方式,建立三元组
//需要注意的是,如果M的类型是 SMtrix * 时,其操作其数据的方式应该是 M->m
//若 M 的类型是 SMatrix 时,则操作数据的方式时 M.m
void createMatrix(SMatrix *M){
printf("请输入稀疏矩阵的行数:");
scanf("%d",&(M->m));