mirror of
https://github.com/kangjianwei/Data-Structure.git
synced 2026-08-18 17:27:25 +08:00
45 lines
968 B
C++
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");
|
|
}
|
|
}
|