採用三元組法儲存稀疏矩陣
#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...