稀疏矩陣之三元組壓縮儲存並且轉置
程式碼演示:
// δ=t/(n?m) <= 0.05 則證明是稀疏矩陣
/* 稀疏矩陣的型別說明及轉置演算法 */
#include<stdio.h>
#include<stdlib.h>
#define MAX 12
typedef int datatype;
typedef struct{
int i, j; // 行號、列號
datatype v; // 元素值
} node;
typedef struct{
int m, n, t; // 行數,列數,非零元素個數
node data[MAX]; // 三元組表
}spMatrix;
spMatrix *Create(); // 建立一個n行m列的稀疏矩陣
spMatrix *TransMat(spMatrix *a); //稀疏矩陣的轉置
void Output(spMatrix *a); //在螢幕上以行列的形式輸出矩陣
int main(){
printf("輸入行列數:\n");
spMatrix *a = Create();
spMatrix *b = TransMat(a);
printf("原矩陣:\n");
Output(a);
printf("轉置矩陣:\n");
Output(b);
return 0;
}
spMatrix *Create(){ // 建立一個3行4列的稀疏矩陣
int m , n , k = 0, t = 0;
scanf("%d%d",&m,&n);
datatype element;
spMatrix *matrix;
matrix = (spMatrix *)malloc(sizeof(spMatrix)); //建立一個稀疏矩陣a
matrix->m = m;
matrix->n = n;
printf("輸入%d行,%d列元素:\n",m,n);
while (k < m*n){
scanf("%d", &element);
if (element != 0){
matrix->data[t].i = k / n;
matrix->data[t].j = k % n;
matrix->data[t].v = element;
t++;
}
k++;
}
matrix->t = t;
return matrix;
}
spMatrix *TransMat(spMatrix *a){ // 稀疏矩陣的轉置
int p, q, bno = 0;
spMatrix *b;
b = (spMatrix *)malloc(sizeof(spMatrix)); //為矩陣b分配記憶體空間
b->m = a->n;
b->n = a->m;
b->t = 0;
if (a->t == 0) // 若b中元素全為零,則將b返回
return b;
for (p = 0; p < a->n; p++)
for (q = 0; q < a->t; q++)
if (a->data[q].j == p){
b->data[bno].i = a->data[q].j;
b->data[bno].j = a->data[q].i;
b->data[bno].v = a->data[q].v;
bno++;
}
b->t = bno;
return b;
}
void Output(spMatrix *a){
//輸出:在螢幕上以行列的形式輸出矩陣
int i = 0, j = 0, k = 0;
for (i = 0; i < a->m; i++){
for (j = 0; j < a->n; j++){
if (i == a->data[k].i && j == a->data[k].j){
printf("%d ", a->data[k].v);
k++;
}
else
printf("%d ", 0);
}
printf("\n");
}
}
效果展示:
相關文章
- 資料結構:陣列,稀疏矩陣,矩陣的壓縮。應用:矩陣的轉置,矩陣相乘資料結構陣列矩陣
- 稀疏矩陣轉置矩陣
- 稀疏矩陣矩陣
- 用三元組連結串列表示的稀疏矩陣類矩陣
- 矩陣轉置矩陣
- 一種比較省記憶體的稀疏矩陣Python儲存方案記憶體矩陣Python
- 【scipy 基礎】--稀疏矩陣矩陣
- Impala之儲存和壓縮
- CUDA版本稀疏矩陣向量乘矩陣
- OpenMP 版本稀疏矩陣向量乘矩陣
- 【shell】用shell實現自動壓縮日誌並且清理壓縮包
- vue-前端匯出 pdf 並且壓縮 zipVue前端
- 8-字串的壓縮儲存字串
- 資料結構(一)-稀疏矩陣資料結構矩陣
- 第八週 專案4-稀疏矩陣的三元組表示的實現及應用矩陣
- Redis儲存優化--小物件壓縮Redis優化物件
- 物件儲存服務的壓縮特性物件
- 矩陣置0矩陣
- 置換矩陣矩陣
- 監控影片儲存壓縮解決方案
- Hadoop 2.6 使用Map Reduce實現矩陣相乘1 矩陣轉置Hadoop矩陣
- 生成二維碼,並且儲存,指定位置的view成圖片,並且儲存到本地相簿View
- 用三列二維陣列表示的稀疏矩陣類陣列矩陣
- Hive的壓縮儲存和簡單優化Hive優化
- 三維空間 旋轉矩陣 四元數 尤拉角 相互轉換 組合旋轉矩陣
- 獲取微信小程式二維碼並且儲存微信小程式
- cuda程式設計與gpu平行計算(六):圖稀疏矩陣轉為CSR結構並傳入gpu程式設計GPU矩陣
- 第八週 專案3-對稱矩陣壓儲存的實現與應用矩陣
- _DataStructure_C_Impl:圖的鄰接矩陣儲存ASTStruct矩陣
- 浪潮線上壓縮,為資料儲存降本增效
- 讓PPT文件儲存時自動壓縮圖片
- MKL稀疏矩陣運算示例及函式封裝矩陣函式封裝
- 強大且易於使用的壓縮和解壓縮軟體:Keka for MacMac
- 三維旋轉:旋轉矩陣,尤拉角,四元數矩陣
- pigz 並行壓縮並行
- LeetCode每日一題: 轉置矩陣(No.867)LeetCode每日一題矩陣
- python中有關矩陣的建立、求逆、轉置Python矩陣
- 二維陣列和稀疏陣列互轉陣列