-
大小: 3KB文件類型: .cpp金幣: 1下載: 0 次發(fā)布日期: 2021-06-16
- 語言: C/C++
- 標簽: 數(shù)據(jù)結(jié)構(gòu)??稀疏矩陣??
資源簡介
//稀疏矩陣的三元組順序表存儲表示
#define MAXSIZE 100 //非零元個數(shù)最大為100
typedef struct
{int i,j; //非零元的行下標和列下標
ElemType e; //非零元
}Triple;
typedef struct
{Triple data[MAXSIZE+1]; //非零元三元組表,data[0]不用
int mu,nu,tu; //矩陣的總行數(shù),總列數(shù),非零元總個數(shù)
}TSMatrix;
代碼片段和文件信息
//稀疏矩陣的三元組順序表存儲表示及其轉(zhuǎn)置算法.cpp?
#include??
#define?ERROR???0
#define?OK??????1
typedef?int?status;
typedef?int?ElemType;
//稀疏矩陣的三元組順序表存儲表示
#define?MAXSIZE?100?????????????????//非零元個數(shù)最大為100
typedef?struct?
{int?ij;???????????????????????????//非零元的行下標和列下標
?ElemType?e;????????????????????????//非零元
}Triple;
typedef?struct?
{Triple?data[MAXSIZE+1];????????????//非零元三元組表data[0]不用
?int?munutu;??????????????????????//矩陣的總行數(shù)總列數(shù)非零元總個數(shù)
}TSMatrix;
status?CreateTriplTable(TSMatrix?&M)
{//建立三元組表
?int?k;
?printf(“請輸入稀疏矩陣行數(shù)?列數(shù)?非零元個數(shù):?“);??
?scanf(“%d%d%d“&M.mu&M.nu&M.tu);
?if?(M.tu<1||M.tu>MAXSIZE)?return?ERROR;
?printf(“行?列?非零元\n“);
?for?(k=1;k<=M.tu;k++)
?scanf(“%d%d%d“&M.data[k].i&M.data[k].j&M.data[k].e);
?return?OK;
}
void?OutputTripleTable(TSMatrix?M)
{//輸出三元組表
?int?k;
?printf(“行數(shù)?列數(shù)?非零元個數(shù):?“);??printf(“%d?%d?%d\n“M.muM.nuM.tu);
?printf(“行?列?非零元\n“);
?for?(k=1;?k<=M.tu;?k++)
?printf(“%2d%3d%5d\n“?M.data[k].i?M.data[k].j?M.data[k].e);
}
void?outputMatrix(TSMatrix?M)
{//將三元組表M轉(zhuǎn)換為對應(yīng)的mu*nu階稀疏矩陣并輸出
?int?i?j?k=1;
?printf(“三元組表對應(yīng)的稀疏矩陣:\n“);
?for?(i=0;?i ?{for?(j=0;?j ?if?(i==M.data[k].i-1&&j==M.data[k].j-1)?{printf(“%5d“M.data[k].e);??k++;}
?else?printf(“%5d“0);
??printf(“\n“);
?}
}
status?TransposeSMatrix(TSMatrix?MTSMatrix?&T)
{//采用三元組表存儲表示求稀疏矩陣M的轉(zhuǎn)置矩陣T.?算法5.1
?int?colpq;
?T.mu=M.nu;?T.nu=M.mu;?T.tu=M.tu;
?if?(T.tu)
?{q=1;???????????????????????????????????//首先置目標結(jié)點(即T)的序號為1即q=1
??fo
- 上一篇:電子郵件收發(fā)程序c++版
- 下一篇:矩陣運算c語言單片機可運行
評論
共有 條評論