lsmatrix.h

来自「很好的矩阵链的计算代码」· C头文件 代码 · 共 74 行

H
74
字号
void CreatSMatrix(RLSMatrix &q,int mu,int nu)
{
	//创建一个带行链接的三元组顺序表矩阵

	int arow,acol,i,j;
	int ctemp[21][21];

	if((mu>MAXSIZE) ||(mu<1) ||(nu<1) || (nu>MAXSIZE))
	{
		printf("输入的矩阵已超出最大表示范围\n");
		exit(0);
	}

	for(i=0;i<=20;i++)
		for(j=0;j<=20;j++)
			ctemp[i][j]=0;

	for(i=1;i<=mu;i++)
	{
		for(j=1;j<=nu;j++)
			scanf("%d",&ctemp[i][j]);
			//ctemp[i][j]=*(*(point+i)+j);
	}

	q.mu=mu;q.nu=nu;q.tu=0;
	for(arow=1;arow<=mu;arow++)
	{
		q.rpos[arow]=q.tu+1;
		for(acol=1;acol<=nu;acol++)
			if(ctemp[arow][acol])
			{
				if(++q.tu>MAXSIZE)
				{
					printf("create bounds error\n");
					exit(0);
				}
				q.data[q.tu].row   =arow;
				q.data[q.tu].col   =acol;
				q.data[q.tu].number=ctemp[arow][acol];
			}
	}
}

void PrintSMatrix(RLSMatrix q)
{
	//输出矩阵

	int i,j,nzero;
	int arow,acol;
	int a[20][20];

	for(i=0;i<=q.mu;i++)
		for(j=0;j<=q.nu;j++)
			a[i][j]=0;

	if((q.mu==0) || (q.nu==0))
	{
		printf("请先创建矩阵:\n");
		exit(0);
	}
	for(nzero=1;nzero<=q.tu;nzero++)
	{
		arow         =q.data[nzero].row;
		acol         =q.data[nzero].col;
		a[arow][acol]=q.data[nzero].number;	
	}

	for(i=1;i<=q.mu;i++)
	{
		for(j=1;j<=q.nu;j++)
			printf(" %d ",a[i][j]);
		printf("\n");
	}
}

⌨️ 快捷键说明

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