//稀疏矩陣例項
#include #define ok 1
#define error 0
#define true 1
#define false 0
#define maxsize 100
typedef int status;
typedef float elemtype;
typedef structtriple;
typedef structtsmatrix;
tsmatrix newmatrix(int m,int n);
//新建乙個三元組表示的稀疏矩陣
status insertelem(tsmatrix *m,int row,int col,elemtype e);
//在三元組表示的稀疏矩陣m,第 row 行,第 col 列位置插入元素e
//插入成功,返回ok,否則返回error
status findelem(const tsmatrix *m,int row,int col,elemtype *e);
//查詢三元組表示的稀疏矩陣m中,第 row 行,第 col列元素,若不為0,
//則用e返回其值,並返回true,否則返回false
status transposesmatrix(const tsmatrix *m,tsmatrix *t);
//採用三元組表儲存表示,求稀疏矩陣m的轉置矩陣t
status fasttransposesmatrix(const tsmatrix *m,tsmatrix *t);
//利用三元組順序表儲存表示,求稀疏矩陣m的轉置矩陣t
status multsmatrix(const tsmatrix *m,const tsmatrix *t,tsmatrix *q);
//稀疏矩陣的乘法,如果符合乘法規則,q返回m*t結果,並返回ok,否則返回error
void printsmatrix(const tsmatrix *m);
//列印稀疏矩陣所有元素
int main()
tsmatrix newmatrix(int m,int n)
status insertelem(tsmatrix *m,int row,int col,elemtype e)
if(row>m->mu||col>m->nu||row<1||col<1)
p=1;//標誌新元素應該插入的位置
if(m->tu==0)
for(t=1;t<=m->tu;t++)//尋找合適的插入位置
if((row>=m->data[t].i)&&(col>=m->data[t].j))
p++;
if(row==m->data[t-1].i && col==m->data[t-1].j)
for(i=m->tu;i>=p;i--)
//插入新元素
m->data[p].i=row;
m->data[p].j=col;
m->data[p].e=e;
m->tu++;
return ok;
}status findelem(const tsmatrix *m,int row,int col,elemtype *e)
return false;
}status transposesmatrix(const tsmatrix *m,tsmatrix *t)
}return ok;
}status fasttransposesmatrix(const tsmatrix *m,tsmatrix *t)
for(col=1;col<=m->nu;col++) num[col]=0;
//求m中每一列含有非零元素的個數
for(t=1;t<=m->tu;t++) ++num[m->data[t].j];
cpot[1]=1;
//求第col列中第乙個非零元素在b.data中的序號
for(col=2;col<=m->nu;col++)
cpot[col]=cpot[col-1]+num[col-1];
for(p=1;p<=m->tu;p++)//for
}//if
return ok;
}status multsmatrix(const tsmatrix *m,const tsmatrix *t,tsmatrix *q)
q->mu=m->mu; q->nu=t->nu; q->tu=0;
p=1;
for(i=1;i<=q->mu;i++)
if(s!=0)}}
return ok;
}void printsmatrix(const tsmatrix *m)
for(i=1;i<=m->mu;i++)else
}printf("\n");
}printf("\n");
}
執行結果演示: 稀疏矩陣三元組表示法的倒置
稀疏矩陣的概念及三元組表示法 如果乙個矩陣中的很多元素的值為零,即零元素的個數遠遠大於非零元素的個數時,稱該矩陣為稀疏矩陣。由於矩陣中零元素過多,若用一般方法對稀疏矩陣進行儲存會造成空間的大大浪費,因此,我們在儲存稀疏矩陣的時候,只需要對非零元素進行儲存。三元組表示法實際上就是乙個二維陣列,即將稀疏...
三元組表示稀疏矩陣並相加
要求稀疏矩陣用三元組結構儲存,實現矩陣a b c,並採用矩陣形式顯示結果。定義兩個結構體,triple結構體用來存放每乙個非零元素的資訊 行標,列標,數值 tripledata用來存放兩個三元組矩陣的資訊 行數,列數,非零元素的個數 每乙個三元組結構都需要呼叫這兩個結構體,兩個結構體共同組成乙個稀疏...
稀疏矩陣 三元組表示的矩陣相加減
設有採用三元組順序表儲存的兩個稀疏矩陣m和n,試著編寫乙個演算法,實現m和n相乘 1.標頭檔案 triseqmatrix.h 該資料夾中包含著三元稀疏矩陣的建立 初始化 轉置 銷毀等操作 pragma once include include define maxsize 200 typedef s...