C/C++利用三元组实现稀疏矩阵运算

本文介绍了如何使用三元组来表示和进行稀疏矩阵的运算,这种表示方式节省了大量空间,尤其适用于非零元素较多的情况。通过三元组(x,y,z)记录非零元素的位置和值,简化了对大规模稀疏矩阵的操作,同时也适合于图的表示。
摘要由CSDN通过智能技术生成

三元组((x,y),z)其中(x,y)表示非零元位置,z表示该坐标的值

由于实际操作时,我们所用的矩阵0非常多,所以一个一个输入值很浪费时间,也浪费空间,所以用一些三元组表示非零元即能表示一个矩阵

三元组稀疏矩阵表示一些图也是很不错的选择
在这里插入图片描述
在这里插入图片描述
这样就很浪费空间,三元组直接

((0,1),1)
((1,2),1)
((3,4),1)
((5,6),1)
((7,8),1)

下面是稀疏矩阵代码:

#include <iostream>
#include<malloc.h>
#include<stdio.h>
#define SMAX 1000

using namespace std;

typedef struct
{
    int i,j;          //储存非零元素的行和列信息
    int  v;            //非零元素的值
} SPNode;       //定义三元组类型

typedef struct
{
    int row,col,notZero; //矩阵的行、列和非零元素的个数
    SPNode data[SMAX]; //三元组表
} SPMatrix;

void printMatrix(SPMatrix m);

SPMatrix createMatrix()
{
    cout<<"enter row and col and notZero"<<endl;
    int row,col, notZero;
    cin>>row >>col >>notZero;
    SPMatrix matrix;
    matrix.row = row;
    matrix.col = col;
    matrix.notZero = notZero;


    for(int k = 1; k <= notZero; k++)
    {
        cout <<"enter each row and col and value"<<endl;
        cin >> matrix.data[k].i >>matrix.data[k].j>>matrix.data[k].v;
    }

    cout <<"三元组:"<<endl;
    for(int k = 1; k <= notZero; k++)
    {
        cout <<"(("
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值