您所在位置: 网站首页 / 稀疏矩阵C 语言实现.doc / 文档详情
稀疏矩阵C 语言实现.doc 立即下载
2024-10-24
约3.8千字
约6页
0
45KB
举报 版权申诉
预览加载中,请您耐心等待几秒...

稀疏矩阵C 语言实现.doc

稀疏矩阵C语言实现.doc

预览

免费试读已结束,剩余 1 页请下载文档后查看

16 金币

下载文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

#include<iostream>
#include<iomanip>
usingnamespacestd;

template<classT>
//三元组
structTrituple
{
	introw;
	intcol;
	Tval;
};
//稀疏矩阵声明
template<classT>
classSparseMatrix
{
public:
	SparseMatrix(intmaxt=100);
	~SparseMatrix();
	boolTransposeTo(SparseMatrix&);
	boolAddTo(constSparseMatrix&);
	boolTransposeTo_Faster(SparseMatrix&);
	voidInput();
	voidOutput();
private:
	Trituple<T>*data;
	introws,cols,terms;
	intmaxterms;
};
template<classT>
SparseMatrix<T>::SparseMatrix(intmaxt)
{
	maxterms=maxt;
	data=newTrituple<T>[maxterms];
	terms=rows=cols=0;
}
template<classT>
SparseMatrix<T>::~SparseMatrix()
{
	if(data!=NULL)
	{
		delete[]data;
	}
}
//普通转置
template<classT>
boolSparseMatrix<T>::TransposeTo(SparseMatrix&B)
{
	if(terms>B.maxterms)
	{
		returnfalse;
	}
	B.rows=cols;
	B.cols=rows;
	B.terms=terms;
	if(terms>0)
	{
		intp=0;
		for(intj=1;j<=cols;j++)
		{
			for(intk=0;k<terms;k++)
			{
				if(data[k].col==j)
				{
					B.data[p].row=j;
					B.data[p].col=data[k].row;
					B.data[p].val=data[k].val;
					p++;
				}
			}
		}
	}
	returntrue;
}
//快速转置
template<classT>
boolSparseMatrix<T>::TransposeTo_Faster(SparseMatrix&B)
{
	if(terms>B.maxterms)
	{
		returnfalse;
	}
	B.rows=cols;
	B.cols=rows;
	B.terms=terms;
	if(terms>0)
	{
		int*num,*cpot;
		num=newint[cols];
		cpot=newint[cols];
		for(intj=0;j<cols;j++)
		{
			num[j]=0;
		}
		for(intk=0;k<terms;k++)
		{
			num[data[k].col-1]++;
		}
		//求出B中每一行的起始下标cpot[]
		cpot[0]=0;
		for(intj=1;j<cols;j++)
		{
			cpot[j]=cpot[j-1]+num[j-1];
		}
		//执行转置操作
		for(intp,k=0;k<terms;k++)
		{
			p=cpot[data[k].col-1]++;
			B.data[p].row=data[k].col;
			B.data[p].col=data[k].row;
			B.data[p].val=data[k].val;
		}
		delete[]num;
		delete[]cpot;
	}
	returntrue;
}
template<classT>
voidSparseMatrix<T>::Input()
{
	cout<<"intputthematrix'row:";
	introw1;
	cin>>row1;
	cout<<"intputthematrix'col:";
	intcol1;
	cin>>col1;
	cout<<"input"<<row1<<"*"<<col1<<"matrix"<<endl;
	intnumber;
	rows=row1;
	cols=col1;
	for(inti=0;i<rows;i++)
	{
		for(intj=0;j<cols
查看更多
单篇购买
VIP会员(1亿+VIP文档免费下)

扫码即表示接受《下载须知》

稀疏矩阵C 语言实现

文档大小:45KB

限时特价:扫码查看

• 请登录后再进行扫码购买
• 使用微信/支付宝扫码注册及付费下载,详阅 用户协议 隐私政策
• 如已在其他页面进行付款,请刷新当前页面重试
• 付费购买成功后,此文档可永久免费下载
全场最划算
12个月
199.0
¥360.0
限时特惠
3个月
69.9
¥90.0
新人专享
1个月
19.9
¥30.0
24个月
398.0
¥720.0
6个月会员
139.9
¥180.0

6亿VIP文档任选,共次下载特权。

已优惠

微信/支付宝扫码完成支付,可开具发票

VIP尽享专属权益

VIP文档免费下载

赠送VIP文档免费下载次数

阅读免打扰

去除文档详情页间广告

专属身份标识

尊贵的VIP专属身份标识

高级客服

一对一高级客服服务

多端互通

电脑端/手机端权益通用