本文主要是介绍C/C++利用三元组实现稀疏矩阵运算,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
三元组((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 1000using 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 >>m
这篇关于C/C++利用三元组实现稀疏矩阵运算的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!