头文件
#define MAXSIZE 100
typedef struct {
int i, j;
int e;
}Triple;
typedef struct {
Triple data[MAXSIZE+1];
int mu, nu, tu;
}SMatrix;
void printSMatrix(SMatrix *m);
SMatrix *createSMatrix();
void multiSMatrix(SMatrix *m, SMatrix *n);
void addSMatrix(SMatrix *m, SMatrix *n);
void menu2();
源文件
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include "sMatrix.h"
void printSMatrix(SMatrix *m) {
int index = 1;
for (int i = 1; i <= m->mu; i++) {
for (int j = 1; j <= m->nu; j++) {
index = 1;
while (index <= m->tu) {
if (i == m->data[index].i && j == m->data[index].j) {
printf("%d\t", m->data[index].e);
break;
}
index++;
}
if(index > m->tu)
{
printf("0\t");
}
}
printf("\n");
}
}
SMatrix *createSMatrix() {
SMatrix * m = (SMatrix *)malloc(sizeof(SMatrix));
printf("\n请输入稀疏矩阵的行数,列数,非零元的个数:");
scanf("%d%d%d", &m->mu, &m->nu, &m->tu);
printf("\n请依次输入元素的行号,列号与数据:\n");
for (int i = 1; i <= m->tu; i++) {
scanf("%d%d%d", &m->data[i].i, &m->data[i].j, &m->data[i].e);
}
printf("\n您创建的矩阵如下:\n");
printSMatrix(m);
return m;
}
SMatrix *fastTranspose(SMatrix *m) {
SMatrix * t = (SMatrix *)malloc(sizeof(SMatrix));
t->mu = m->nu;
t->nu = m->mu;
t->tu = m->tu;
if (t->tu) {
int *num = (int *)malloc(sizeof(int)*(m->nu+1));
for (int i = 1; i <= m->nu; i++) {
num[i] = 0;
}
for (int i = 1; i <= m->tu; i++) {
num[m->data