设稀疏矩阵 M(m,n)存放于二维数组 A[m][n]中,设计一个算法,从 A 生成系
数矩阵的 M 的三元组表示。
#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 100
#define m 10
#define n 10
typedef struct { //三元组
int i, j;
int e;
}Triple;
typedef struct { //三元组顺序表
Triple data[MAXSIZE + 1];
int row, col, count;
}TSMatrix;
void CreatArray(int A[m][n],int row,int col)
{
printf("请开始输入数组元素:\n");
for (int i = 0; i < row; i++)
{
for (int j = 0; j < col; j++)
{
scanf_s("%d", &A[i][j]);
}
}
return;
}
void CreatTh(TSMatrix &t,int Array[m][n],int r,int c) {
t.row = m; t.col = n; t.count = 0;
for (int i = 0; i < r; i++)
{
for (int j = 0; j < c; j++)
{
if (Array[i][j] != 0 )
{
t.data[t.count].i= i;
t.data[t.count].j = j;
t.data[t.count].e = Array[i][j];
t.count++;
//printf("1\n");
}
}
}
return ;
}
void PrintT(TSMatrix t) {
for (int i = 0; i < t.count; i++)
{
printf("%d %d %d", t.data[i].i, t.data[i].j, t.data[i].e);
printf("\n");
}
}
int main()
{
int A[m][n];
for (int i = 0; i < 3; i++)
{
int row, col;
printf("请输入row,col:\n");
scanf_s("%d %d", &row, &col);
CreatArray(A, row, col);
TSMatrix t;
CreatTh(t, A, row, col);
printf("行 列 值\n");
PrintT(t);
printf("\n" );
}
return 0;
}