mirror of
https://github.com/kangjianwei/Data-Structure.git
synced 2026-02-09 02:02:32 +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");
|
||
}
|
||
}
|