稀疏矩陣的轉置

2021-08-09 10:48:35 字數 1708 閱讀 6784

採用三元組法儲存稀疏矩陣

#include 

#include

#define ok 1

#define error -1

#define max_size 12500

typedef int elemtype;//儲存資料的型別 可更改

typedef int status;

三元組結構體

typedef

struct

triple;

稀疏矩陣的結構體

typedef

struct

tsmatrix;

建立乙個稀疏矩陣

int createsmatrix(tsmatrix *m)

printf("請輸入列下標:");

scanf("%d", &m->data[pos].col);

if(m->data[pos].col > m->cn + 1)

printf("請輸入值:");

scanf("%d", &m->data[pos].e);

len++;

printf("-------------\n");

printf("position:%d\n", pos);

pos++;

m->tn++;

printf("length:%d\n", len);

printf("m.tu:%d\n", m->tn);

printf("-------------\n");

}else

if(c == 'n' || c == 'n')

else

printf("是否插入元素(y/n):");

getchar();

scanf("%c", &c);

}return ok;

}

輸出稀疏矩陣

void outputsmatrix(tsmatrix m)

}

稀疏矩陣的轉置矩陣

m是原矩陣

m1是轉置後的矩陣

num[col]:統計矩陣第col列中非0元素的個數

cpot[col]:指示矩陣第col列第乙個非0元素在b.data中的恰當位置

status

transposematrix(tsmatrix *m, tsmatrix *m1)

else

//求原矩陣中每一列非0元素個數

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

//求第col列中第乙個非0元在b.data中的序號

col = 1;

while(col <= m->cn + 1)

else

if(col >= 2 && col < m->cn + 1)

col++;}}

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

return ok;

}

int main()

執行結果:

例:

稀疏矩陣轉置

輸出稀疏矩陣的轉置矩陣。行列均不大於20 第一行輸入兩個正整數n和m,分別表示矩陣的行數和列數,然後輸入矩陣三元組,最後輸入 0 0 0 表示結束輸入。轉置後的矩陣。include include define maxsize 100 typedef struct triple typedef st...

稀疏矩陣轉置矩陣

num 矩陣a中某列的非零元素的個數 cpot 初值表示矩陣a中某列第乙個非零元素在b中的位置,並有如下遞推 cpot 1 0 cpot col cpot col 1 num col 1 2 col nu end right.const int maxterm 100 struct sparsema...

稀疏矩陣的轉置

稀疏矩陣的轉置 使用了兩個輔助陣列 num num j 矩陣a中第j列非零元素的個數 cpot cpot j 矩陣a中第j列的第乙個非零元素在其轉置矩陣b的三元組順序表的位置。推出2個規則 1 cpot 1 1 2 cpot j cpot j 1 num j 1 演算法思路 根據1,2規則計算num...