[09周课程]矩阵相关代码

有关稀疏矩阵的有关代码

#define M//稀疏矩阵的行数
#define N//稀疏矩阵的列数
#define MaxSize //稀疏矩阵中非0的元素最多的个数
typedef struct{
	int r;//行号
	int c;//列号
	ElemType d;//元素值 
}TupNode;  //三元组类型 
typedef struct
{
	int rows;  //行数 
	int cols;	//列数 
	int nums;	//非零元素个数 
	TupNode data[MaxSize];
 } TSMatrix;
 
 //创建三元组表示
 void CreateMat(TSMatrix &t,ElemType A[M][N])
 {
 	int i,j;
 	t.rows =M;
 	t.cols = N;
 	t.nums = 0;
 	for(i=0;i<M;i++)
 		for(j=0;j<N;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;
	while(k<t.nums&&i>t.data[k].r)
	while(k<t.nums&&i==t.data[k].r&&j>t.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 = r.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;
  }
  //稀疏矩阵指定位置赋值给变量
  bool Assign(TSMatrix t,ElemType &x,int i,int j)
  {
  	int k = 0;
  	if(i>=t.rows||j>=t.cols)
  		return false;
  	while(k<t.nums&&i>data[k].r)k++;
  	while(k<t.nums&&i==t.data[k].r&&j>t.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;
   } 
   
   


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值