稀疏矩阵的三元组
—— 头文件
#include <stdio.h>
#define number 3
结构体声明三元组
// 结构体声明三元组节点
typedef struct {
int i, j;
int data;
} triple;
结构体声明稀疏矩阵
// 结构体声明稀疏矩阵节点
typedef struct {
triple data[number];
int n, m, num;
} TSMatrix;
构造增添三元组元素的函数
int index = 0; // 全局变量(记录三元组的索引值)
// 填充三元组内容
void appendElement(TSMatrix *thisM, int i, int j, int data){
thisM->data[index].i = i;
thisM->data[index].j = j;
thisM->data[index].data = data;
index++;
}
构造展示稀疏矩阵的函数
// 输出存储的稀疏矩阵
void display(TSMatrix M){
for(int i = 1; i <= M.n; i++){ // 列
for(int j = 1;j <= M.m; j++){ // 行
int value = 0;
for(int k = 0; k < M.num; k++){
if(i == M.data[k].i && j == M.data[k].j){ // 证明找到非零元素
printf("%d ", M.data[k].data); // 输出非零元素
value = 1;
break;
}
}
if(value == 0){
printf("0 ");
}
}
printf("\n");
}
}
—— 主函数
int main() {
TSMatrix M;
M.m = 3; // 三行
M.n = 3; // 三列
M.num = 3; // 三个非零元素
// 插入三元组
appendElement(&M, 1, 1, 1);
appendElement(&M, 2, 3, 5);
appendElement(&M, 3, 1, 3);
// 展示三元组
display(M);
// outputs: 1 0 0
// 0 0 5
// 3 0 0
return 0;
}