c语言稀疏矩阵的实现

本文介绍了一种使用C语言实现稀疏矩阵的方法。通过定义结构体来存储非零元素的位置及其值,并提供初始化及显示矩阵的功能。适用于处理大部分元素为零的大规模矩阵。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#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);
     
}

 

转载于:https://www.cnblogs.com/doublekai/p/6721652.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值