用c语言按照如下步骤完成稀疏矩阵的操作。 1.用三元组表存储以下稀疏矩阵,0 12 9 0 0 0 0, 0 0 0 0 0 0 0, -3 0 0 0 0 14 0, 0 0 24 0 0 0 0, 0 18 0 0 0 0 0 ,15 0 0 -7 0 0 0并输出(输出结果如图);
时间: 2023-09-10 18:07:42 浏览: 74
这里提供一份 C 语言代码实现,使用三元组表存储稀疏矩阵,并输出结果:
```c
#include <stdio.h>
#define MAX_SIZE 20 // 稀疏矩阵最大元素个数
// 稀疏矩阵的三元组表示
typedef struct {
int row, col; // 元素的行下标和列下标
int val; // 元素的值
} Triple;
// 稀疏矩阵的压缩存储表示
typedef struct {
Triple data[MAX_SIZE]; // 静态数组存储三元组表
int rows, cols, nums; // 矩阵的行数、列数和非零元素个数
} SparseMatrix;
// 初始化稀疏矩阵
void initSparseMatrix(SparseMatrix *matrix) {
matrix->rows = 6;
matrix->cols = 7;
matrix->nums = 8;
matrix->data[0].row = 0;
matrix->data[0].col = 1;
matrix->data[0].val = 12;
matrix->data[1].row = 0;
matrix->data[1].col = 2;
matrix->data[1].val = 9;
matrix->data[2].row = 2;
matrix->data[2].col = 0;
matrix->data[2].val = -3;
matrix->data[3].row = 2;
matrix->data[3].col = 5;
matrix->data[3].val = 14;
matrix->data[4].row = 3;
matrix->data[4].col = 2;
matrix->data[4].val = 24;
matrix->data[5].row = 4;
matrix->data[5].col = 1;
matrix->data[5].val = 18;
matrix->data[6].row = 5;
matrix->data[6].col = 0;
matrix->data[6].val = 15;
matrix->data[7].row = 5;
matrix->data[7].col = 3;
matrix->data[7].val = -7;
}
// 输出稀疏矩阵
void printSparseMatrix(SparseMatrix matrix) {
int i, j, k = 0;
for (i = 0; i < matrix.rows; i++) {
for (j = 0; j < matrix.cols; j++) {
if (k < matrix.nums && matrix.data[k].row == i && matrix.data[k].col == j) {
printf("%d\t", matrix.data[k].val);
k++;
} else {
printf("0\t");
}
}
printf("\n");
}
}
int main() {
SparseMatrix matrix;
initSparseMatrix(&matrix);
printSparseMatrix(matrix);
return 0;
}
```
输出结果如下:
```
0 12 9 0 0 0 0
0 0 0 0 0 0 0
-3 0 0 0 0 14 0
0 0 24 0 0 0 0
0 18 0 0 0 0 0
15 0 0 -7 0 0 0
```
阅读全文