⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 head.h

📁 稀疏矩阵的转置(利用三元组储存)
💻 H
字号:
//假设非0元个数的最大植为100
#define MAXSIZE 100
class tsmatrix;
//三元顺序表
class triple
{
public:
	int ii,jj;//行号和列号
	elemtype e;//三元组非零元素的值
	friend class tsmatrix;
};

class tsmatrix
{
public:
	//构造函数
	tsmatrix() {}
	//构造函数,创建一个Mrow行,Mcol列,非零元素个数为t的稀疏矩阵
	//tsmatrix(int mrow,int mcol,int t);
	//求转置矩阵
	void trmatrix(tsmatrix &);
	triple data[MAXSIZE];//储存三元组表的数组
	int mu,nu,tu;
};

//创建一个Mrow行,Mcol列,非零元素个数为t的稀疏矩阵
/*tsmatrix::tsmatrix(int mrow,int mcol,int t)
{
	int m,n,i,j,f0=0;
	if(t<=0) exit(1);
	elemtype (*A)[MCOL]=new elemtype[MROW][MCOL];
	if(!A){cerr<<"内存分配失败!\ n";exit(-1);}
	for(i=0;i<mrow;i++)
		for(j=0;j<mcol;j++) A[i][j]=0;
		srand(150);
		while(f0<=t)//形成二维数组A
		{
			m=rand()%100;
			n=rand()%10;
			if(m>=0&&m<=mrow&&n>=0&&n<=mcol)
			{
				A[m][n]=rand()%10;
			    if (A[m][n]!=0) 
					f++;
			}
		}
		{for (i=0;i<mrow;i++)//输出创建的稀疏矩阵
		
			for (j=0;j<mcol;j++)
				cout<<setw(3)<<A[i][j];
			cout<<endl;
		}
}*/

//求稀疏矩阵的转置
void tsmatrix::trmatrix(tsmatrix &T)
{
	int p,q,col;
	T.mu=nu;T.nu=mu;//矩阵T行数等于矩阵A列数,矩阵T列数等于矩阵A行数

	T.tu=tu;//矩阵T非0元数等于矩阵A非0元数
	if (T.tu)//如果T的非0元数大于0
	{
		q=0;//存放指针位置
		for(col=0;col<nu;++col)//按列号做扫描
 
			for(p=0;p<tu;++p) //在数组中找列号为COL的三元组
				if (data[p].jj==col)
				{
					//新三元组的行号,列号,元素
					T.data[q].ii=data[p].jj;
					T.data[q].jj=data[p].ii;
					T.data[q].e=data[p].e;
					++q;

				}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -