日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java矩阵三元组相减_实现稀疏矩阵(采用三元组表示)的基本运算

發布時間:2025/4/16 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java矩阵三元组相减_实现稀疏矩阵(采用三元组表示)的基本运算 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

實現稀疏矩陣(采用三元組表示)的基本運算假設nxn的稀疏矩陣A采用三元組表示,設計一個程序exp4-2.cpp,完成如下功能。

(1)生成如下兩個稀疏矩陣的三元組a和b a= 1 0 3 0 0 1 0 0 0 0 1 0 0 0 1 1 b= 3 0 0 0 0 4 0 0 0 0 1 0 0 0 2 0

(2)輸出a矩陣的三元組 (3)輸出b的轉置矩陣的三元組 代碼如下

//稀疏矩陣的三元組表示-算法

#include

#define M 4

#define N 4

#define MaxSize? 100? ? ? ? ?//矩陣中非零元素最多個數

typedef int ElemType;

typedef struct

{

int r;? ? ? ? ? ? ? ? ? ? //行號

int c;? ? ? ? ? ? ? ? ? ? //列號

ElemType d;? ? ? ? ? ? ? ? //元素值

} TupNode;? ? ? ? ? ? ? ? ? ? //三元組定義

typedef struct

{

int rows;? ? ? ? ? ? ? ? //行數

int cols;? ? ? ? ? ? ? ? //列數

int nums;? ? ? ? ? ? ? ? //非零元素個數

TupNode data[MaxSize];

} TSMatrix;? ? ? ? ? ? ? ? ? ? //三元組順序表

void CreatMat(TSMatrix &t,ElemType A[M][N])? //從一個二維稀疏矩陣創建其三元組表示

{

int i,j;

t.rows=M;t.cols=N;t.nums=0;

for (i=0;i

{

for (j=0;j

if (A[i][j]!=0)? ? ?//只存儲非零元素

{

t.data[t.nums].r=i;t.data[t.nums].c=j;

t.data[t.nums].d=A[i][j];t.nums++;

}

}

}

bool Value(TSMatrix &t,ElemType x,int i,int j)? //三元組元素賦值

{

int k=0,k1;

if (i>=t.rows || j>=t.cols)

return false;? ? ? ? ? ? ? ? //失敗時返回false

while (kt.data[k].r) k++;? ? ? ? ? ? ? ? ? ? //查找行

while (kt.data[k].c) k++;//查找列

if (t.data[k].r==i && t.data[k].c==j)? ? //存在這樣的元素

t.data[k].d=x;

else? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //不存在這樣的元素時插入一個元素

{

for (k1=t.nums-1;k1>=k;k1--)

{

t.data[k1+1].r=t.data[k1].r;

t.data[k1+1].c=t.data[k1].c;

t.data[k1+1].d=t.data[k1].d;

}

t.data[k].r=i;t.data[k].c=j;t.data[k].d=x;

t.nums++;

}

return true;? ? ? ? ? ? ? ? ? ? ? ? //成功時返回true

}

bool Assign(TSMatrix t,ElemType &x,int i,int j)? //將指定位置的元素值賦給變量

{

int k=0;

if (i>=t.rows || j>=t.cols)

return false;? ? ? ? ? ? //失敗時返回false

while (kt.data[k].r) k++;? ? ? ? ? ? ? ? ? ? //查找行

while (kt.data[k].c) k++;//查找列

if (t.data[k].r==i && t.data[k].c==j)

x=t.data[k].d;

else

x=0;? ? ? ? ? ? ? ? //在三元組中沒有找到表示是零元素

return true;? ? ? ? ? ? //成功時返回true

}

void DispMat(TSMatrix t)? ? ? ? //輸出三元組

{

int i;

if (t.nums<=0)? ? ? ? ? ? //沒有非零元素時返回

return;

printf("\t%d\t%d\t%d\n",t.rows,t.cols,t.nums);

printf("\t------------------\n");

for (i=0;i

printf("\t%d\t%d\t%d\n",t.data[i].r,t.data[i].c,t.data[i].d);

}

void TranTat(TSMatrix t,TSMatrix &tb)? ? ? ? //矩陣轉置

{

int p,q=0,v;? ? ? ? ? ? ? ? ? ? //q為tb.data的下標

tb.rows=t.cols;tb.cols=t.rows;tb.nums=t.nums;

if (t.nums!=0)? ? ? ? ? ? ? ? ? ? //當存在非零元素時執行轉置

{

for (v=0;v

for (p=0;p

if (t.data[p].c==v)

{

tb.data[q].r=t.data[p].c;

tb.data[q].c=t.data[p].r;

tb.data[q].d=t.data[p].d;

q++;

}

}

}

int main()

{

ElemType A[4][4]={

{1,0,3,0},

{0,1,0,0},

{0,0,1,0},

{0,0,1,1}

};

ElemType B[4][4]={

{3,0,0,0},

{0,4,0,0},

{0,0,1,0},

{0,0,0,2}

};

TSMatrix a,b,c;

CreatMat(a,A);

CreatMat(b,B);

printf("三元組a矩陣:\n");

DispMat(a);

printf("輸出b的轉置三元組\n");

TranTat(b,c);

DispMat(c);

}

總結

以上是生活随笔為你收集整理的java矩阵三元组相减_实现稀疏矩阵(采用三元组表示)的基本运算的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。