以行列形式输入任意-个稀疏矩阵A, 输出其对应的三元组表示,并在三元组中查找任意-个A[i][]的值。用c语言写出这个代码
时间: 2024-05-03 16:16:46 浏览: 86
数据结构-三元组稀疏矩阵求和函数
以下是一个简单的C语言代码,用来输入稀疏矩阵A并将其转换为三元组表示。然后,它会提示用户输入一个i值,然后在三元组中查找A[i][]的值。
```c
#include<stdio.h>
#define MAX_TERMS 100
//定义一个稀疏矩阵结构体
typedef struct {
int row;
int col;
int value;
} term;
//将稀疏矩阵转换成三元组表示
void sparse_matrix_to_triplet(term a[], int m, int n, term b[]) {
int i,j,k=1;
b[0].row = m;
b[0].col = n;
b[0].value = k-1;
for(i=0;i<m;i++) {
for(j=0;j<n;j++) {
if(a[i*n+j].value != 0) {
b[k].row = i;
b[k].col = j;
b[k].value = a[i*n+j].value;
k++;
}
}
}
b[0].value = k-1;
}
int main() {
term a[MAX_TERMS], b[MAX_TERMS];
int m,n,i,j,index;
printf("请输入稀疏矩阵的行数和列数:\n");
scanf("%d %d",&m,&n);
printf("请按行列顺序输入稀疏矩阵的值:\n");
for(i=0;i<m;i++) {
for(j=0;j<n;j++) {
scanf("%d",&a[i*n+j].value);
a[i*n+j].row = i;
a[i*n+j].col = j;
}
}
sparse_matrix_to_triplet(a,m,n,b);
printf("稀疏矩阵的三元组表示为:\n");
for(i=0;i<=b[0].value;i++) {
printf("%d %d %d\n",b[i].row,b[i].col,b[i].value);
}
printf("请输入要查找的i值:\n");
scanf("%d",&index);
printf("A[%d][]的值为:\n",index);
for(i=1;i<=b[0].value;i++) {
if(b[i].row == index) {
printf("%d ",b[i].value);
}
}
return 0;
}
```
阅读全文