Files
Data-Structure/Dev-C++/ExerciseBook/05.24/SMatrix.cpp
T

45 lines
968 B
C++

/*======================
* 稀疏矩阵,用于习题5.24
=======================*/
#include "SMatrix.h" //**稀疏矩阵**//
// 创建稀疏矩阵M
Status CreateSMatrix(SMatrix* M, char* path) {
FILE* fp;
int k, i, j;
fp = fopen(path, "r");
ReadData(fp, "%d%d%d", &((*M).mu), &((*M).nu), &((*M).tu));
// 读取元素
for(k = 1; k <= (*M).tu; k++) {
ReadData(fp, "%d%d%d", &i, &j, &((*M).data[k].e));
(*M).data[k].seq = (i - 1) * (*M).nu + j;
}
fclose(fp);
return OK;
}
// 输出稀疏矩阵M
void PrintSMatrix(SMatrix M) {
int r, c;
int k = 1;
for(r = 1; r <= M.mu; r++) {
for(c = 1; c <= M.nu; c++) {
if(r == (M.data[k].seq - 1) / M.nu + 1 && c == (M.data[k].seq - 1) % M.nu + 1) {
printf("%3d ", M.data[k].e);
k++;
} else {
printf(" 0 ");
}
}
printf("\n");
}
}