description:
輸出稀疏矩陣的轉置矩陣。(行列均不大於20)
input:
第一行輸入兩個正整數n和m,分別表示矩陣的行數和列數,
然後輸入矩陣三元組,最後輸入(0 0 0)表示結束輸入。
output:
轉置後的矩陣。
sample input :
4 41 1 1
2 1 2
3 2 3
0 0 0
sample output:
1 1 1
1 2 2
2 3 3
直接上**:
#include
using
namespace std;
#define maxsize 100
typedef
struct
triple;
//三元組定義
typedef
struct
tsmatrix;
//三元組順序表定義
void
found
(tsmatrix& q,
int is,
int js)
//記錄矩陣的行數和列數
void
input
(tsmatrix& q,
int i,
int j,
int data,
int& o)
//輸入三元組
q.m[q.num]=;
//賦值
q.num++
;//統計三元組個數
}void
transpose
(tsmatrix& q,tsmatrix& p)
;o)//陣列所有元素置0
for(
int j
;j)//用num陣列統計轉置前三元組每列非零元素的個數
for(
int i
;i1;i++
)//用cpos陣列統計轉置前三元組前i列非零元素的總個數
for(
int i
,n,m;i//遍歷轉置前三元組的同時對比cpos陣列,將元素放入轉置後三元組的指定位置
cpos[n]++;
}}void
output
(tsmatrix p)
//按要求輸出
;iintmain()
transpose
(q,p)
;output
(p);
return0;
}
資料結構 稀疏矩陣轉置
我們來看看這個矩陣,五行五列,可以包含二十五個元素,但是此矩陣只有七個元素。但是我們在存放資料的時候分配了二十五塊int單元。這樣是不是有點太 浪費了。如果我們只儲存這七個元素我想會節省一部分記憶體空間。但是如果我們只儲存矩陣中的元素還是不行的,因為只有元素我們就無法還原矩陣,我們還需要此 元素的行...
資料結構 稀疏矩陣的轉置
熟悉稀疏矩陣的三元組順序儲存方式。稀疏矩陣如圖所示,輸出矩陣和三元組錶用轉置演算法 求轉置矩陣並輸出轉置後的矩陣和三元組表 初始矩陣為 n dispmatrix mm printf 矩陣的三元組順序表為 n dispmat mm printf n n tsmatrix t trantat mm,t ...
《資料結構》複習之稀疏矩陣(矩陣轉置)
矩陣在資料結構中常用二維陣列 int a m n m為列的元素個數,n為行的元素個數 表示,這也是最簡單的表示方法。然而當矩陣中含有大量0元素時,也稱為稀疏矩陣,這樣的表示方法會浪費大量的儲存空間,為了節省儲存單元,最好只存非零元素。常用的儲存稀疏矩陣的方法有順序儲存和鏈式儲存兩種,這裡只介紹順序儲...