三元组((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 <<"(("