稀疏矩阵转成三元组的c语言代码
时间: 2023-09-29 08:03:09 浏览: 125
下面是将稀疏矩阵转换为三元组的C语言代码示例:
```c
#include <stdio.h>
#define MAX_TERMS 101
// 三元组的结构体
typedef struct {
int row;
int col;
int value;
} term;
void sparse_to_triplet(int matrix[][MAX_TERMS], int row, int col, term triplet[])
{
int i, j, k;
k = 1;
for (i = 0; i < row; i++) {
for (j = 0; j < col; j++) {
if (matrix[i][j] != 0) {
triplet[k].row = i;
triplet[k].col = j;
triplet[k].value = matrix[i][j];
k++;
}
}
}
triplet[0].row = row;
triplet[0].col = col;
triplet[0].value = k - 1;
}
int main()
{
int matrix[MAX_TERMS][MAX_TERMS] = {
{0, 1, 0, 0},
{0, 0, 0, 2},
{3, 0, 0, 0},
{0, 0, 4, 0}
};
term triplet[MAX_TERMS];
sparse_to_triplet(matrix, 4, 4, triplet);
int i;
for (i = 0; i <= triplet[0].value; i++) {
printf("(%d, %d, %d)\n", triplet[i].row, triplet[i].col, triplet[i].value);
}
return 0;
}
```
该代码中,`sparse_to_triplet`函数接收一个稀疏矩阵的二维数组、行数、列数和一个三元组数组,并将稀疏矩阵转换为三元组存储在该数组中。`main`函数中创建了一个稀疏矩阵,调用`sparse_to_triplet`函数将其转换为三元组,并输出结果。
阅读全文