稀疏矩陣之三元組壓縮儲存並且轉置
程式碼演示:
// δ=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");
}
}
效果展示:
相關文章
- 資料結構:陣列,稀疏矩陣,矩陣的壓縮。應用:矩陣的轉置,矩陣相乘資料結構陣列矩陣
- 稀疏矩陣矩陣
- 矩陣轉置矩陣
- 【scipy 基礎】--稀疏矩陣矩陣
- Impala之儲存和壓縮
- 8-字串的壓縮儲存字串
- vue-前端匯出 pdf 並且壓縮 zipVue前端
- 資料結構(一)-稀疏矩陣資料結構矩陣
- 物件儲存服務的壓縮特性物件
- Redis儲存優化--小物件壓縮Redis優化物件
- 矩陣置0矩陣
- 置換矩陣矩陣
- 監控影片儲存壓縮解決方案
- LeetCode每日一題: 轉置矩陣(No.867)LeetCode每日一題矩陣
- 生成二維碼,並且儲存,指定位置的view成圖片,並且儲存到本地相簿View
- cuda程式設計與gpu平行計算(六):圖稀疏矩陣轉為CSR結構並傳入gpu程式設計GPU矩陣
- Hive的壓縮儲存和簡單優化Hive優化
- Python程式碼閱讀(第41篇):矩陣轉置Python矩陣
- MATLAB|讀取一個檔案,並將其不同內容儲存為不同的矩陣Matlab矩陣
- 二維陣列和稀疏陣列互轉陣列
- 矩陣消元 elimination矩陣
- 獲取微信小程式二維碼並且儲存微信小程式
- MKL稀疏矩陣運算示例及函式封裝矩陣函式封裝
- LeetCodeHot100 73. 矩陣置零 54. 螺旋矩陣 48. 旋轉影像 240. 搜尋二維矩陣 IILeetCode矩陣
- 浪潮線上壓縮,為資料儲存降本增效
- 怎麼轉換圖片格式並壓縮圖片
- 強大且易於使用的壓縮和解壓縮軟體:Keka for MacMac
- 矩陣置零—leetcode73矩陣LeetCode
- HttpURLConnection 實戰Get/Post 請求並且儲存PDF檔案HTTP
- tarfile壓縮模組
- zip矩陣轉至矩陣
- 儲存空間緊張?來看 TDengine TSZ 壓縮演算法如何顯著提升壓縮率演算法
- 【PTA】鄰接矩陣儲存圖的深度優先遍歷矩陣
- 濃縮的才是精華:淺析GIF格式圖片的儲存和壓縮
- 每日一題@49矩陣置零每日一題矩陣
- 稀疏陣列陣列
- 內建模組--壓縮模組--zipfile
- THREE 矩陣優先原則和平移旋轉矩陣矩陣