c语言稀疏矩阵的实现

#include "stdio.h"
#define maxsize 10
typedef struct
{
    int i,j; //非零元素的行、列 
    int v;    //非零元素的值 
}Triple;
typedef struct
{
    Triple data[maxsize];
    int m,n; //矩阵的行、列     
}TSMarix;
InitTriple(TSMarix *M)
{
    int i,j,k,v,t;
    printf("请输入稀疏矩阵非零元素的个数:\n");
    scanf("%d",&v);
    for(k=1;k<=v;k++)
    {
        printf("请输入第%d个元素行、列和值:",k);
        scanf("%d%d%d",&i,&j,&t);
        //储存非零元素的下标和值: 
        M->data[k].i=i; 
        M->data[k].j=j;
        M->data[k].v=t;
    }
    
}
void displayMatrix(TSMarix *M)
{
     int i,j,p,q,k=1;
     for(p=0;p<M->m;p++)
    {
        for(q=0;q<M->n;q++)
            if(M->data[k].i==p&&M->data[k].j==q)  //输出非零元素 
                {
                    printf(" %d ",M->data[k].v);
                    k++;
                }
            else printf(" 0 ");
        printf("\n");
        
    }
}
void display(TSMarix *M)
{
    int i,j,p,q;
    printf("请输入矩阵的行、列:\n");
    scanf("%d%d",&i,&j);
    M->m=i;M->n=j;
    for(p=0;p<M->m;p++)
    {
        for(q=0;q<M->n;q++)
            printf(" 0");
        printf("\n");
    
    }
        
}
main()
{
     TSMarix M;
     display(&M);
     InitTriple(&M);
     displayMatrix(&M);
     
}

 

posted @ 2017-04-17 10:27  Doublekai  阅读(4792)  评论(0编辑  收藏  举报