行逻辑链接
 
 
—— 头文件
 
#include <stdio.h>
#define number 5  
#define NUM 4  
 
结构体声明三元组和稀疏矩阵
 
typedef struct {
    int i, j;
    int data;
} triple;
typedef struct {
    triple data[number];
    int rpos[NUM];
    int n, m, num;
} TSMatrix;
 
构造增添三元组元素的函数
 
int index = 1; 
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.m; i++){  
        for(int j = 1;j <= M.n; j++){  
            int value = 0;
            
            if(i+1 <= M.m){
            	for(int k = M.rpos[i]; k < M.rpos[i+1]; 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 ");
	            } 
			}else{
				for(int k = M.rpos[i]; 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 = 4;  
    M.num = 4;  
    M.rpos[1] = 1;  
	M.rpos[2] = 3;  
    M.rpos[3] = 4;  
    
	
	appendElement(&M, 1, 2, 3);
	appendElement(&M, 1, 4, 5);
	appendElement(&M, 2, 3, 1);
	appendElement(&M, 3, 1, 2);
	
	
    display(M);
    
	
	
    return 0;
}