稀疏矩阵的三元组表示(稀疏矩阵的三元组顺序表示方法)

2024-07-05 19:50:18 67

稀疏矩阵的三元组表示(稀疏矩阵的三元组顺序表示方法)

本文目录

稀疏矩阵的三元组顺序表示方法


#include《stdio.h》
#include《stdlib.h》
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2
#define MAXSIZE 100
typedef int Status;
typedef int ElemType;
typedef struct
{
int i,j;
ElemType e;
}Triple;
typedef struct
{
int mu,nu,tu;
Triple data[MAXSIZE+1];
}TSMatrix;
Status CreatSMatrix(TSMatrix &M)
//创建新的稀疏矩阵
{
printf(“输入稀疏方阵的行数,列数以及非零元个数:“);
scanf(“%d%d%d“,&M.mu,&M.nu,&M.tu);
while(M.tu》M.mu * M.nu)
{
printf(“输入稀疏方阵的行数,列数以及非零元个数:“);
scanf(“%d%d%d“,&M.mu,&M.nu,&M.tu);

}
int k;
for( k=1;k《=M.tu;k++)
{
printf(“输入第%d个非0元素的行数,列数以及值:“,k);
scanf(“%d%d%d“,&M.data[k].i,&M.data[k].j,&M.data[k].e);

if(M.data[k].i》M.mu || M.data[k].j》M.nu )
{
printf(“输入错误!\n“);system(“PAUSE“);exit(1);
}
while(M.data[k].e==0)
{
printf(“输入的必须是非零元素!\n“);
scanf(“%d,%d,%d“,&M.data[k].i,&M.data[k].j,&M.data[k].e);
}

}
return OK;
}
Status PrintSMatrix(TSMatrix &X)
{

if(!X.tu)
{
printf(“矩阵为空!\n“);
return 0;
}
int i,j,k=1;
for(i=1;i《=X.mu;i++)
{ for(j=1;j《=X.nu;j++)
{ if(i==X.data[k].i && j==X.data[k].j){printf(“%2d “,X.data[k].e);k++;}
else printf(“ 0 “);

}
printf(“\n“);
}
return OK;
}
Status TransposeSMatrix(TSMatrix M,TSMatrix &T)
{
T.mu = M.nu;
T.nu = M.mu;
T.tu = M.tu;
if(T.tu)
{
int q = 1;
int col;
int p;
for(col=1;col《=M.nu;++col)

for(p=1;p《=M.tu;++p)

if(M.data[p].j == col)
{
T.data[q].i = M.data[p].j;
T.data[q].j = M.data[p].i;
T.data[q].e = M.data[p].e;
++q;
}
}
return OK;
}
void main()
{
TSMatrix M;
TSMatrix T;
int choice;
do{
printf(“\n请输入你的选择:\n“);
printf(“1 创建稀疏矩阵\n“);
printf(“2 该矩阵的转值\n“);
printf(“0 退出\n“);

scanf(“%d“,&choice);
switch(choice)
{
case 1:
printf(“\n“);
CreatSMatrix(M);
printf(“\n“);
PrintSMatrix(M);
break;
case 2:
printf(“\n“);
TransposeSMatrix( M,T);
printf(“\n“);
PrintSMatrix(T);
break;
default:
printf(“\n\n你输入的信号无效!\n\n“);
break;
}
}while(choice!=0);
}

一个稀疏矩阵如图所示,写出对应的三元组表示形式


对于稀疏矩阵来说,如果还是用100×100的方式来存储的话,显然是非常浪费的,三元组方式存储数据的策略是只存储非零元素。但是稀疏矩阵中非零元素的分布是没有任何规律的,在这种情况下,表示形式是:

1、存储非零元素

2、同时存储该非零元素所对应的行下标和列下标

3、稀疏矩阵中的每一个非零元素需由一个三元组(i,j,aijaij)唯一确定,稀疏矩阵中的所有非零元素构成三元组线性表,三元组中的i就是行下标,j是列下标,aijaij是对应的元素值。

扩展资料:

稀疏矩阵的压缩存储方法

拿稀疏矩阵中的元素1来说,该元素的位置为第0行,第2列,在用三元组(i ,j ,aij)进行存储时,就是0 2 1,发现在这个三元组的线性表中,每个数据元素都是以三元组的方式组成的。

当确定三元组的存储策略后,要做的就是把这样的三元组存储下来。需要把矩阵中的行数,列数,非零元素个数,矩阵中的数据都保存在data数据域,在data数据域中的每个数据元素都是以三元组形式存储,data域中表示的非零元素通常以行序为主序顺序排列,下标按行有序的存储结构。

算法:以行序方式扫描二维矩阵A,将其非零的元素加入到三元组t。要求为data域以行序为主序顺序排列。


稀疏矩阵的三元组表示法


这很困难吗,我觉得STL的代码更难额,都看不懂....
稀疏矩阵转化为三元组
按列逐个检索,不是零的列出来
三元组的第一元行数,第二元列数,第三元,数据
很简单啊,例子百度百科上就有,代码还是自己写更好

对于下列稀疏矩阵写出它的三元组表示法


三元,即数据所在行,所在列以及数据的值。
((1,1,1),
(1,5,2),
(3,2,-3),
(4,2,-4),
(5,5,-1),
(5,6,15),
(6,4,7))

三元组表与稀疏矩阵,怎么转换要求法最好文字表述


l-》e=(list)malloc((MAXSIZE+1)*sizeof(ElemType));// 这句在VC不能通过编译,因为e是elemtype类型,分配的空间是list类型,不匹配。

三元组,第1列是行号,第2列是列号,第3列是非零元素的值。假设以顺序存储结构来表示三元组表(triple table),则得到稀疏矩阵的一种压缩存储方式,即三元组顺序表,简称三元组表。

扩展资料:

对于在实际问题中出现的大型的稀疏矩阵,若用常规分配方法在计算机中储存,将会产生大量的内存浪费,而且在访问和操作的时候也会造成大量时间上的浪费,为了解决这一问题,从而产生了多种解决方案。

由于其自身的稀疏特性,通过压缩可以大大节省稀疏矩阵的内存代价。具体操作是:将非零元素所在的行、列以及它的值构成一个三元组(i,j,v),然后再按某种规律存储这些三元组,这种方法可以节约存储空间。

参考资料来源:百度百科-三元组


数据结构(c语言)将稀疏矩阵的三元组表示法以行列(矩阵)形式输出 (不要用二维数组..)


#include 《stdio.h》
#define maxsize 12500
#define elemtype int
typedef int status;
typedef struct
{
int i,j;
elemtype e;
}triple;
typedef struct
{
triple data[maxsize+1];
int mu,nu,tu;
}tsmatrix;
tsmatrix creatematrix()
{
tsmatrix M;
int n;
printf(“输入矩阵的行数,列数,个数:\n“);
scanf(“%d%d%d“,&M.mu,&M.nu,&M.tu);
printf(“输入非零元的值(行数、列数和值):\n“);
for(n=0;n《M.tu;n++)
scanf(“%d%d%d“,&M.data[n].i,&M.data[n].j,&M.data[n].e);
return M;
}
tsmatrix transposesmtrix(tsmatrix M,tsmatrix T)
{
int q,col,p;
T.mu=M.nu; T.nu=M.mu; T.tu=M.tu;
if(T.tu)
{
q=0;
for(col=0;col《M.nu;col++)
for(p=0;p《M.tu;p++)
if(M.data[p].j==col)
{
T.data[q].i=M.data[p].j;
T.data[q].j=M.data[p].i;
T.data[q].e=M.data[p].e;
++q;
}
}
return T;
}
void print(tsmatrix M)
{
int x,y,n,k;
for(x=0;x《M.mu;x++)
{
for(y=0;y《M.nu;y++)
{
k=0;
for(n=0;n《M.tu;n++)
if((M.data[n].i==x)&&(M.data[n].j==y))
{
printf(“%3d“,M.data[n].e);
k=1;
}
if(k==0)
printf(“%3d“,k);
}
printf(“\n“);
}
}
void main()
{
tsmatrix M,T;
M=creatematrix();
printf(“M矩阵为:\n“);
print(M);
T=transposesmtrix(M,T);
printf(“转置后的矩阵为:\n“);
print(T);
}
这是我写的,有矩阵的输出 和矩阵的转置,希望对你有用!

带行表的三元组表表示稀疏矩阵


答案应该选A
带行表的三元组表
 为了方便某些矩阵运算,在按行优先存储的三元组表中,加入一个行表来记录稀疏矩阵中每行的非零元素在三元组表中的起始位置。这就是带行表的三元组表。
(1)类型描述
#define MaxRow l00 //在三元组表定义前加入此最大行定义
typedef struct {
TriTupleNode data[MaxSize];
int RowTab[MaxRow];//行表,应保证m≤MaxRow
int m,n,t;
}RTriTupleTable;
(2)带行表的三元组表的操作
① 对于任给行号i(0≤i≤m-1),能迅速地确定该行的第一个非零元在三元组表中的存储位置为RowTab[i]
② RowTab[i](0≤i≤m-1)表示第i行之前的所有行的非零元数。
③ 第i行上的非零元数目为RowTab[i+1]-RowTab[i](0≤i≤m-2)
④ 最后一行(即第m-l行)的非零元数目为t-RowTab[m-1](t为矩阵的非零元总数)
注意:
 若在行表中令RowTab[m]=t(要求MaxRow》m)会更方便 些,且t可省略。
 带行表的三元组表可改进矩阵的转置算法,具体【参阅其它参考书】。
A选项的行表表示为 02335
B选项的行表表示为 02355
C选项的行表表示为 02235
D选项的行表表示为 02235

稀疏矩阵如何生成相应的三元组顺序表


typedef struct
{
int i,j;
ElemType e;
}Triple;
typedef struct
{
Triple data[MAXSIZE+1];
int mu,nu,tu;
}TSMatrix;
int InitSMatrix(TSMatrix &M)
{
printf(“请输入矩阵的行数:“);
scanf(“%d“,&M.mu);
printf(“列数:“);
scanf(“%d“,&M.nu);
printf(“非零元的个数:“);
scanf(“%d“,&M.tu);
for(int t=1;t《=M.tu;t++) //data不用
{
printf(“第%d个非零元的行号:“,t);
scanf(“%d“,&M.data[t].i);
printf(“第%d个非零元的列号:“,t);
scanf(“%d“,&M.data[t].j);
printf(“第%d个非零元的元素值:“,t);
scanf(“%d“,&M.data[t].e);
}
return OK;
}

稀疏矩阵的三元组表示(稀疏矩阵的三元组顺序表示方法)

本文编辑:admin

更多文章:


字体样式的英文(类似于宋体这样的字体用英语怎么说)

字体样式的英文(类似于宋体这样的字体用英语怎么说)

本文目录类似于宋体这样的字体用英语怎么说常用的英文字体有哪些英文字母的斜体有哪些字体设计的字体用英语怎么说字体的英文名叫啥比较正式的常用的英语字体是 好看的,用来写信的英语字体是宋体字在电脑中的英文是什么标识字体的英文单词是什么类似于宋体这

2024年7月22日 21:34

bootstrap网页制作(如何用 bootstrap 创建一个网站)

bootstrap网页制作(如何用 bootstrap 创建一个网站)

本文目录如何用 bootstrap 创建一个网站第9章 Bootstrap响应式网页设计如何用bootstrap做网站如何利用bootstrap制作网页如何制作网页界面 bootstrap如何用 bootstrap 创建一个网站这篇教程旨在

2024年7月9日 16:50

看世界视频素材(看世界视频什么文案会火做新闻人物素材)

看世界视频素材(看世界视频什么文案会火做新闻人物素材)

“看世界视频素材”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看看世界视频素材(看世界视频什么文案会火做新闻人物素材)!本文目录看世界视频什么文案会火做新闻人物素材怎样制作短视频文案看世界文案素材哪里有原创快手看世界的素材哪

2024年9月9日 00:50

mysql备份方案(mysql备份方式有哪些)

mysql备份方案(mysql备份方式有哪些)

“mysql备份方案”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看mysql备份方案(mysql备份方式有哪些)!本文目录mysql备份方式有哪些Mysql备份恢复方案有哪些,全备,热备该怎么做mysql高可用方案有哪些

2024年7月15日 15:25

plot函数只有一个参数时(只有一个变量,为啥plot画出了两条线)

plot函数只有一个参数时(只有一个变量,为啥plot画出了两条线)

本文目录只有一个变量,为啥plot画出了两条线matlab中plot画图中调用函数时只有一个固定的值Matlab 画函数图,结果只有一个值出现用plot函数,输入参数为一个二维矩阵,画多条曲线在一张图上matlab画空间曲线不闭合只有一个变

2024年4月18日 04:30

下载ps出现theinstallation(下载pr出现theinstallation)

下载ps出现theinstallation(下载pr出现theinstallation)

本文目录下载pr出现theinstallationps2020出现theinstallation怎么办mac虚拟机安装ps提示不符合最低要求The installation is incomplete是什么意思下载pr出现theinstal

2024年7月21日 05:50

manual override(manual override是什么意思)

manual override(manual override是什么意思)

其实manual override的问题并不复杂,但是又很多的朋友都不太了解manual override是什么意思,因此呢,今天小编就来为大家分享manual override的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分

2024年7月11日 17:45

数控车床多久可以学会(学数控车床好吗要学多久)

数控车床多久可以学会(学数控车床好吗要学多久)

本文目录学数控车床好吗要学多久做数控车床多久能学会数控车床多久能学会数控车床 多久能学会车床一般要多久才能学会学数控车床大概多久学数控车床好吗要学多久如果你有普车基础,3个月轻松学会,如果你不知道车床是干什么的,那学起来时间长一点,一般6个

2024年7月21日 04:03

美发颜色代码1到10分别是什么?#003366;#FFFFFF;#000000请问以上这些颜色代码,的含义

美发颜色代码1到10分别是什么?#003366;#FFFFFF;#000000请问以上这些颜色代码,的含义

本文目录美发颜色代码1到10分别是什么#003366;#FFFFFF;#000000请问以上这些颜色代码,的含义十六进制颜色代码表美发颜色代码1到10分别是什么1:蓝黑色2:黑色3:深咖啡色4:咖啡色5:浅咖啡色 6:深金色7:金色8:浅金

2024年7月22日 04:05

flutter ios(Flutter iOS端 白屏的解决方案)

flutter ios(Flutter iOS端 白屏的解决方案)

各位老铁们,大家好,今天由我来为大家分享flutter ios,以及Flutter iOS端 白屏的解决方案的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!

2024年6月29日 17:05

手机网页在哪里找(手机uc浏览器上收藏的网址在什么文件夹里可以找到)

手机网页在哪里找(手机uc浏览器上收藏的网址在什么文件夹里可以找到)

本文目录手机uc浏览器上收藏的网址在什么文件夹里可以找到如何在手机中找出浏览器访问过的网页地址手机老是出现找不到网页怎么办手机浏览器在哪里找手机网址栏搜索在哪手机浏览器上网打开网页找不到华为手机上怎样查找以前看过的网站手机官网在哪里可以进去

2024年7月9日 20:49

square可数吗(plaza和square的区别是什么)

square可数吗(plaza和square的区别是什么)

“square可数吗”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看square可数吗(plaza和square的区别是什么)!本文目录plaza和square的区别是什么square几个音节square“平方”可数吗squ

2024年8月8日 02:00

停止办理护照(2022年11月广州关闭办理护照了吗)

停止办理护照(2022年11月广州关闭办理护照了吗)

本文目录2022年11月广州关闭办理护照了吗难道2023年护照都不能办吗国家为什么暂停办理普护国家停止办理护照吗2022年普通护照停办能恢复吗办理护照办到一半不办了护照不让办理了现在为啥不让办护照护照暂停办理是怎么回事2022年11月广州关

2024年6月30日 23:17

integrity例句(a man of integrity是什么意思)

integrity例句(a man of integrity是什么意思)

其实integrity例句的问题并不复杂,但是又很多的朋友都不太了解a man of integrity是什么意思,因此呢,今天小编就来为大家分享integrity例句的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!本文

2024年7月23日 07:55

电商运营培训班学费大概多少?杭州运营培训班有哪些

电商运营培训班学费大概多少?杭州运营培训班有哪些

大家好,今天小编来为大家解答以下的问题,关于运营培训班,电商运营培训班学费大概多少这个很多人还不知道,现在让我们一起来看看吧!本文目录电商运营培训班学费大概多少杭州运营培训班有哪些电商运营培训课程有哪些电商运营培训课程哪个好学新媒体短视频运

2024年7月21日 15:55

工商网站查询企业信息武威(怎样查询企业工商注册信息)

工商网站查询企业信息武威(怎样查询企业工商注册信息)

本文目录怎样查询企业工商注册信息怎么在工商局网站查企业注册信息怎么在工商网络查询企业信用信息如何在工商局网站上查询公司注册信息如何在工商局网站查询公司的具体信息企业工商信息怎么查询怎样在工商局网站查询企业如何查询企业在工商部门注册的企业信息

2024年3月20日 14:20

jetbrains插件(idea插件codota停止了)

jetbrains插件(idea插件codota停止了)

大家好,今天小编来为大家解答以下的问题,关于jetbrains插件,idea插件codota停止了这个很多人还不知道,现在让我们一起来看看吧!本文目录idea插件codota停止了Chrome浏览器插件JetBrains IDE Suppo

2024年8月11日 17:56

tadpole(tadpole怎么读)

tadpole(tadpole怎么读)

本文目录tadpole怎么读tadpole什么意思蝌蚪英语怎么说tadpoletadpole是什么意思tadpole是什么意思、音标又是什么tadpole怎么读tadpole 生词本简明释义n.蝌蚪复数:tadpoles易混淆的单词:Tad

2024年6月28日 23:12

google app下载(怎么下载google play的应用)

google app下载(怎么下载google play的应用)

大家好,关于google app下载很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于怎么下载google play的应用的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有

2024年7月25日 12:50

随机数字组合(14位数字随机组合有几种情况)

随机数字组合(14位数字随机组合有几种情况)

本文目录14位数字随机组合有几种情况excel中,0-9十个数随机组合5个数形成一组数,怎么完成0-9五个随机数字组合,数字相加为10的倍数,有多少组合(数字可重复数字间无排列顺序)数字1到34(34个数字),每6个数字为一个组合,随机每两

2024年7月12日 07:57

近期文章

本站热文

iphone vpn设置(ios设置vpn快捷开关)
2024-07-22 15:01:12 浏览:2334
windows12正式版下载(操作系统Windows Server 2012 R2,在哪能下载到,公司用的)
2024-07-20 17:26:53 浏览:1730
java安装教程(win10如何安装JAVA)
2024-07-19 19:55:49 浏览:1155
client mfc application未响应(每次进cf就提示client MFC Application未响应该怎么办啊!急急急)
2024-07-20 11:15:58 浏览:1152
标签列表

热门搜索