typedef struct
triple;
typedef struct
xishuarray;
int triarray(xishuarray &m)
// 建立乙個稀疏矩陣;
// 輸入行數、列數,支援亂序輸入三元組,並計數;
m.num=num; // num的值即為此矩陣的非零元個數;
for(p=1;p<=m.num-1;++p) // 按行為主序依次重新排列非零元
temp=m.data[min].i; // 交換行值;
m.data[min].i=m.data[p].i;
m.data[p].i=temp;
temp=m.data[min].j; // 交換列值;
m.data[min].j=m.data[p].j;
m.data[p].j=temp;
temp=m.data[min].value; // 交換元素值;
m.data[min].value=m.data[p].value;
m.data[p].value=temp;
} for(row=1,num=0;row<=m.row;++row) // 記錄m.rpos[row];
return ok;
} void printtriarray(xishuarray &m)
}void printxishuarray(xishuarray &m)
else
printf("%3d",e);
} printf("\n"); }}
//實現矩陣的轉置;
int zhuanzhi(xishuarray m,xishuarray &t)
} return ok;
}int multriple(xishuarray m,xishuarray n,xishuarray & q)
//輸入兩個稀疏矩陣m和n,並初始化q,然後計算m*n的值賦給q
q.row=m.row; //初始化q
q.col=n.col;
q.num=0;
if(m.num*n.num!=0) //q是非零矩陣
} }
} return ok;
}//加法的實現
int addtriple(xishuarray m,xishuarray w,xishuarray &x)
//初始化x
x.row=m.row;
x.col=m.col;
m.num=0;
for(p=1;p<=m.num||p<=w.num;p++)
else}}
for(p=1;p<=x.num-1;++p) // 按行為主序依次重新排列非零元
temp=x.data[min].i; // 交換行值;
x.data[min].i=x.data[p].i;
x.data[p].i=temp;
temp=x.data[min].j; // 交換列值;
x.data[min].j=x.data[p].j;
x.data[p].j=temp;
temp=x.data[min].value; // 交換元素值;
x.data[min].value=x.data[p].value;
x.data[p].value=temp;
} for(row=1,num=0;row<=x.row;++row) // 記錄m.rpos[row];
return ok;
}//減法的實現
/*int redtriple(xishuarray m,xishuarray w,xishuarray &y)
*/
稀疏陣列,稀疏矩陣概念
稀疏矩陣 矩陣中非零元素的個數遠遠小於矩陣元素的總數,並且非零元素的分布沒有規律,通常認為矩陣中非零元素的總數比上矩陣所有元素總數的值小於等於0.05時,則稱該矩陣為稀疏矩陣 sparse matrix 該比值稱為這個矩陣的稠密度。稀疏陣列 稀疏陣列可以看做是普通陣列的壓縮,但是這裡說的普通陣列是值...
6 1 6 2 陣列 稀疏矩陣
陣列是一種由相同資料型別構成的序列。陣列的本質就是乙個線性表。對於一維陣列,該線性表中的元素型別就是需要存放的型別elementtype,對於多維陣列,其維度d 2 則可以認為線性表的元素型別是d 1 維陣列。這樣來看,陣列也是一種遞迴的定義。對於陣列來說,通常只有以下兩種操作 讀取和寫入。這兩種操...
陣列的壓縮儲存(特殊矩陣 稀疏矩陣)
其實這裡就不應該說是陣列了,而應該是說行列式,對稱矩陣 a i j a j i 上下三角行列式 對角線以下 以上的元素均為0 帶狀行列式 這個可能不太好理解,舉乙個例子 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 這時看對角線比較舒服,可以看出...