0
点赞
收藏
分享

微信扫一扫

(数据结构)C语言实现稀疏矩阵的三元组 —— 2022/3/25

稀疏矩阵的三元组

—— 头文件

#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;
}
举报

相关推荐

0 条评论