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

📄 稀疏矩阵.cpp

📁 是一个关于数据结构中稀疏矩阵的程序 有矩阵的转置的操作
💻 CPP
字号:
#include<iostream>
using namespace std;
#define MAXSIZE 12500
#define OK 1
#define ERROR 0
typedef int status;
typedef int Elemtype;
typedef struct{
	int i,j;
	Elemtype e;
}Triple;
typedef struct{
	Triple data[MAXSIZE+1];
	int mu,nu,tu;
}TSMatrix;
void printf(TSMatrix M)
{   cout<<"i"<<" "<<"j"<<" "<<"v"<<endl;
	for(int s=1;s<=M.tu;s++)
	{cout<<M.data[s].i<<" "<<M.data[s].j<<" "<<M.data[s].e<<endl;}
}
/*status TransposeSMatrix(TSMatrix M,TSMatrix &T)
{
	T.mu=M.nu;T.nu=M.mu;T.tu=T.tu;
	if(T.tu)
	{int q=1;
	for(int col=1;col<=M.nu;++col)
		for(int p=1;p<=M.tu;++p)
			if(M.data[p].j==col){
				M.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;
}*/
status FsM(TSMatrix M,TSMatrix &T)
{int col,p,q=1;
	T.mu=M.nu;T.nu=M.mu;T.tu=M.tu;
 if(T.tu)
 {   int num[M.nu],copt[M.nu]; 
	 for (col=1;col<=M.nu;++col) num[col]=0;
	 for(t=1;t<=M.tu;++t) ++num[M.data[t].j];
	 copt[1]=1;
	 for(col=2;col<=M.nu;++col)  copt[col]=copt[col-1]+num[col-1];
	 for(p=1;p<=M.tu;++p){
		 col=M.data[p].j;q=copt[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; ++copt[col];
	 }
 }return OK;
}


main()
{TSMatrix M,T;
 int s,row,col;
 Elemtype em;
 cout<<"输入行总数mu 列总数nu 和非零元个数tu"<<endl;
 cin>>M.mu>>M.nu>>M.tu;
 for(s=1;s<=M.tu;s++)
 {   cout<<"以行为主序输入行i 列 j 和值e"<<endl;
	 cin>>row>>col>>em;
	 M.data[row].i=row;
     M.data[row].j=col;
     M.data[row].e=em;
 }
 printf(M);
FSM(M,T);
printf(T);
}

 


⌨️ 快捷键说明

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