資源簡介
設計一個稀疏矩陣運算器。實現兩個矩陣相加、相減和相乘等的運算。矩陣的輸入輸出均按通常的陣列形式
代碼片段和文件信息
#include
#define?maxsize?100
typedef?struct
{
?int?ij;????????????????//該非零元的行和列
?int?v;??????????????????//該非零元的值
}triple;
typedef?struct
{
?triple?data[maxsize];?????????//非零元三元組表,data[0]未用
?int?rpos[maxsize];?
?int?mnt;????????????????????//矩陣的行數,列數和非零元個數
}tripletable;
void?convert()??????????????????????????//矩陣的轉置
{
?int?k;
?tripletable?AB;
?printf(“輸入稀疏矩陣A的行數,列數和非零元個數:“);
?scanf(“%d?%d?%d“&A.m&A.n&A.t);
?for(k=1;k<=A.t;k++)
?{
??printf(“輸入第%d個非0元素的行數,列數和值:“k);
??scanf(“%d?%d?%d“&A.data[k].i&A.data[k].j&A.data[k].v);
?}
?B.m=A.m;B.n=A.n;B.t=A.t;
?if(B.t)
?{
??int?q=1col;
??for(col=1;col<=A.n;++col)
???for(int?p=1;p<=A.t;++p)
????if(A.data[p].j==col)
????{
?????B.data[q].i=A.data[p].j;
?????B.data[q].j=A.data[p].i;
?????B.data[q].v=A.data[p].v;
?????++q;
????}
?}
?int?shuru[100][100]={0};
?for(k=1;k<=B.t;k++)
?{
??shuru[B.data[k].j][B.data[k].i]=B.data[k].v;
?}
?printf(“輸入為:\n“);
?for(k=1;k<=B.m;k++)
?{
??for(in
- 上一篇:艾賓浩斯曲線表
- 下一篇:計算機圖形學實驗報告(附原代碼)
評論
共有 條評論