三元組矩陣轉置

2021-07-06 08:05:56 字數 1561 閱讀 2382

#include
#include #define maxsize 100	//非零元的最大個數

#define elentype int

#define status int//返回值型別

#define ok 1

#define error 0

#define overflow -1

/*稀疏矩陣的三元組儲存結構*/

typedef struct triple;

typedef struct *tsmatrix,matrix;//代表triple sequence matrix 三元組矩陣

/*建立乙個矩陣*/

status createtsmatrix(tsmatrix &m)

printf("輸入三元組的行數,列數和非零元個數:");

int rc,cc,dc;

scanf("%d%d%d",&rc,&cc,&dc);

m->row_count = rc;

m->col_count = cc;

m->data_count = dc;

int i = 0;

printf("開始構造矩陣\n");

int r,c,d;//作為臨時變數

while(irc || c>cc)else

} printf("構造矩陣成功\n");

return ok;

}/*列印三元組矩陣*/

status printtsmatrix(tsmatrix m)else

} printf("\n");

}*///所以還是用描述法吧

for(int i=1;i<=m->data_count;i++)

return ok;

}/*使用暴力法轉置*/

status brusetranspose(tsmatrix &m_from,tsmatrix &m_to)

}} }

return ok;}/*

*快速轉置法,借助num和cpot兩個陣列,num[col]表示矩陣m中第col列的非零元個數

*cpot[col]表示第col列的第乙個非零元在轉置後的矩陣t.dataarray陣列中的合適位置

*其中:cpot[1]=1;cpot[col] = cpot[col-1]+num[col-1];

*/status fasttranspose(tsmatrix m,tsmatrix &t)

if(t->data_count)

for(int i=1;idata_count;i++)

cpot[1] = 0;

for(col=2;col<=m->col_count;col++)

int t;

for(int p=1;p<=m->data_count;p++)

} return ok;

}int main()

執行結果:

三元組稀疏矩陣快速轉置

稀疏矩陣是只儲存非零元的行值 列值 元素值 data 0 來儲存矩陣的行數 列數 非零元個數 struct position struct list void quick transpose list l,list s 記錄每一列第乙個非零元的位置 int col num l.data 0 col ...

稀疏矩陣三元組的快速轉置

include include using namespace std define maxsize 1024 define elemtype int define status int 三元組 typedef struct tripletriple 由三元組組成的表 typedef struct ...

稀疏矩陣的轉置用三元組表示

include include using namespace std const int maxsize 100 定義非零元素的對多個數 const int maxrow 10 定義陣列的行數的最大值 typedef struct triple typedef struct tsmatrix ty...