C语言以三元组表存贮的稀疏矩阵A,B 非零元个数分别为m 和n。试完成程序,完成A+B。第一排为分别为A B元素的个数,以下各排分别输入对应的三元组,头m组为A中的元素,接下来为B的元素,同一个矩阵的元素按照先行后列排列,第一行规定为1,第一列规定为1
时间: 2024-06-02 19:14:18 浏览: 14
以下是一份可能的完整程序:
#include <stdio.h>
#include <stdlib.h>
typedef struct {
int row;
int col;
int val;
} Triple;
void createSparseMatrix(Triple** matrix, int* size) {
printf("Enter number of non-zero elements: ");
scanf("%d", size);
*matrix = (Triple*)malloc((*size) * sizeof(Triple));
printf("Enter the elements in the format 'row col val':\n");
for (int i = 0; i < (*size); i++) {
scanf("%d %d %d", &((*matrix)[i].row), &((*matrix)[i].col), &((*matrix)[i].val));
}
}
void printSparseMatrix(Triple* matrix, int size) {
printf("Row\tColumn\tValue\n");
for (int i = 0; i < size; i++) {
printf("%d\t%d\t%d\n", matrix[i].row, matrix[i].col, matrix[i].val);
}
}
int main() {
Triple* A;
int mA;
createSparseMatrix(&A, &mA);
printf("A:\n");
printf("%d\t%d\t%d\n", mA, A[0].row, A[0].col);
printSparseMatrix(A, mA);
Triple* B;
int nB;
createSparseMatrix(&B, &nB);
printf("B:\n");
printf("%d\t%d\t%d\n", nB, B[0].row, B[0].col);
printSparseMatrix(B, nB);
free(A);
free(B);
return 0;
}
这个程序首先定义了一个名为Triple的结构体,用于存储三元组表中的每个元素。然后定义了两个函数,createSparseMatrix用于创建稀疏矩阵,printSparseMatrix用于打印稀疏矩阵。在主函数中,首先调用createSparseMatrix函数分别创建A和B矩阵,然后打印输出矩阵的元素个数和第一个元素的行列值,最后调用printSparseMatrix函数打印输出整个稀疏矩阵的每个元素的行列值和值。最后释放动态分配的内存并返回0。