91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 7KB
    文件類型: .cpp
    金幣: 1
    下載: 0 次
    發布日期: 2021-05-07
  • 語言: C/C++
  • 標簽: 矩陣??

資源簡介

稀疏矩陣相加、相乘和轉置(用三元組實現)

資源截圖

代碼片段和文件信息

#include????
#include?????
int?const?N=4;??????????????//常量??數組的大小
int?const?MaxSize=100;????//?最大?為100??常量
typedef?int?ElemType;?????//?ElemType?==?int
typedef?struct?????//結構體
{???
????int?r;??????????//行號????
????int?c;??????????//列號????
????ElemType?d;????//元素值????
}TupNode;????????//三元組定義????
typedef?struct?????//?結構體
{???
????int?rows;???//?行
????int?cols;???//?列
????int?nums;???//非零元素個數????
????TupNode?data[MaxSize];???
}TsMatrix;??????//三元組存儲結構????
???
void?CreatMat(TsMatrix?&tElemType?A[N][N])???//三元組表示稀疏矩陣????
{???
????int?ij;???
????t.rows=N;t.cols=N;t.nums=0;???//?行列賦值
????for(i=0;i????{???
????????for(j=0;j????????????if(A[i][j]!=0)???
????????????{???
????????????????t.data[t.nums].r=i;???//?Tsatrix中的TupNode?data[MaxSize]??從0開始儲存數組A的非零值??r?c分別存儲行列值
????????????????t.data[t.nums].c=j;???
????????????????t.data[t.nums].d=A[i][j];???
????????????????t.nums++;???
????????????}???
????}???
}???
void?DispMat(TsMatrix?t)??//輸出三元組????
{???
????int?i;???
????if(t.nums<1)???//?沒有直接返回??
????????return?;???//?有的話輸出
????printf(“\t行數:%d\t列數:%d\t非零個數:%d\n“t.rowst.colst.nums);???
????printf(“\t--------------------------\n“);???
????for(i=0;i????????printf(“\t%d\t%d\t%d\n“t.data[i].rt.data[i].ct.data[i].d);???
}???

void?FastTranMat(TsMatrix?tTsMatrix?&tb)????????????//矩陣的快速轉置????
{???
????int?colpqsnum[N]cpot[N];???
????tb.rows=t.cols;tb.cols=t.rows;tb.nums=t.nums;???
????if(t.nums)??????????????????????????????????????????//?如果存在執行下面函數
????{???
??????????for(col=0;col????????????????????????????????????????????????????????//先置t矩陣每列非0元個數均為0????
??????????for(s=0;s????????????????????????????????????????????????????????//求t中每一列非0元個數????
????????????cpot[0]=0;???????????????????????????????????//t中第一列第一個非元在tb中的序號為1????
??????????for(col=1;col??????????cpot[col]=cpot[col-1]+num[col-1];???
??????????????????????????????????????????????????????????//求t中第col列中第一個非0元在T中的序號????
???????????for(p=0;p???????????{???
??????????????col=t.data[p].c;?????????????????????????????//記下t中第p個元素的列號????
???????????????q=cpot[col];???????????????????????????????//該列中第一個非0元在tb中的序號????
??????????????tb.data[q].r=t.data[p].c;???
??????????????tb.data[q].c=t.data[p].r;???
??????????????tb.data[q].d=t.data[p].d;???
??????????????++cpot[col];???
???????????}???
????}???
}???
int?MatAdd(TsMatrix?aTsMatrix?bTsMatrix?&c)????????????//?矩陣的相加
{???
????int?i=0j=0k=0;???
????ElemType?v;???
????if(a.rows!=b.rows||a.cols!=b.cols)???
????????return?0;????????????????????????????????????//行數或列數不相等時不能進行相加????
????c.rows=a.rows;c.cols=a.rows;????????????????????//c的行數和列數與a的相同????
????while(i????{???
????????if(a.data[i].r==b.data[j].r)???
????????{???
????????????if(a.data[i]

評論

共有 條評論