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

📄 jz.c

📁 矩阵的转置。将一个稀疏矩阵压缩存贮到一个三元组数组中
💻 C
字号:
#include<stdio.h>
#define MAXN 100
#define MAXM 100
int a[MAXN][MAXM],b[][3];
int row,colu,k;
void mat_transpose(a,b)        //转置矩阵的函数
int a[][3],b[][3];
{
	int m,n,t,p,q,col;
	m=a[0][0];
	n=a[0][1];
	t=a[0][2];
	b[0][0]=n;
	b[0][1]=m;
	b[0][2]=t;
	if(t>0)
	{
		q=1;
		for(col=0;col<n;col++)
			for(p=1;p<=t;p++)
				if(a[p][1]==col)
				{
					b[q][0]=a[p][1];
					b[q][1]=a[p][0];
					b[q][2]=a[p][2];
					q++;
				}
	}
}
int change(a,b)           //将一个稀疏矩阵压缩存贮到一个三元组数组中
int a[][MAXM],b[][3];
{
	int i,j;
	int k=1;
	for(i=0;i<row;i++)
		for(j=0;j<colu;j++)
			if(a[i][j]!=0)
			{
				b[k][0]=i;
			    b[k][1]=j;
			    b[k][2]=a[i][j];
				k++;
			}
		b[0][0]=row;
		b[0][1]=colu;
		b[0][2]=k-1;
		return(k-1);
}
void nchange(b,a)                      //将一个三元组数组还原为稀疏矩阵
int b[][3],a[][MAXM];
{
	int i;
	for(i=1;i<=k;i++)
		a[b[i][0]][b[i][1]]=b[i][2];
}
void main()
{
	int n,m;
	int i,j;
	int o,d;
    int a[MAXN][MAXM]={{0}};           //用来存放原稀疏矩阵
	int c[MAXN][MAXM]={{0}};           //用来存放转置后的矩阵
    int e[100][3]={{0}};               //用来存贮原稀疏矩阵的三元组数组
	int f[100][3]={{0}};               //用来存贮转置后矩阵的三元组数组
	printf("please input n and m:");   //n,m分别表示原稀疏矩阵的行数和烈数
	scanf("%d,%d",&n,&m);
	row=n;
	colu=m;
	printf("Please input the member of the array:\n");    //输入非零元素
	while(1)
	{   
		printf("o=(1,-1)");                  //o标志输入的结束与否
		scanf("%d",&o);
		if(o==1)
		{
			printf("行号:i=");
	        scanf("%d",&i);
	        printf("列号:j=");
	        scanf("%d",&j);
	        printf("Please input the number:");
            scanf("%d",&d);
			a[i][j]=d;
		}
		if(o==-1)
		{
			printf("\n");
			break;
		}
	}
	printf("原矩阵为:\n");
    for(i=0;i<n;i++)
	{
		for(j=0;j<m;j++)
	        printf("%-4d",a[i][j]);
		printf("\n");
	}
	printf("压缩存贮后的数组为:\n");
	k=change(a,e);
    for(i=0;i<=k;i++)
	{
		for(j=0;j<3;j++)
			printf("%-4d",e[i][j]);
		printf("\n");
	}
	mat_transpose(e,f);
	nchange(f,c);
	printf("转置后的矩阵为:\n");
	for(i=0;i<m;i++)
	{
		for(j=0;j<n;j++)
			printf("%-4d",c[i][j]);
		printf("\n");
	}
}


⌨️ 快捷键说明

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