目录

矩阵的转置

目录

矩阵的转置

对于 https://latex.csdn.net/eq?M%5Ctimes%20M 的矩阵,使用两个指针变量,可以方便实现(i,j)处元素与(j,i)处元素交换位置。令指针Arow=&A[i][0],则Arow[j]可实现对第i行j列元素的访问。令指针Bptr=&A[0][i],则*Bptr就可以访问(0,i)处元素,然后,令Bptr+=M,就可访问同列不同行的元素。

代码实现

#define M  3

int A[3][3]={ {1,2,3},{4,5,6},{7,8,9}};

void transpose(int A[M][M]);

void transpose(int A[M][M])

{

int i,j;

int t;

int *Arow;

int *Bptr;

for(i=0;i<M;i++)

{

Arow=&A[i][0];

Bptr=&A[0][i];

for(j=0;j<i;j++)

{

t=Arow[j];

Arow[j]=*Bptr;

*Bptr=t;

Bptr+=M;

}

}

}

void main()

{

int B[M][M];

int i,j;

for(i=0;i<M;i++)          //把A矩阵元素存储在B矩阵中

for(j=0;j<M;j++)

B[i][j]=A[i][j];

transpose(A);            //把A矩阵转置

}

运行结果

https://latex.csdn.net/eq?B%3D%5Cbegin%7Bbmatrix%7D%201%20%26%202%20%26%203%5C%5C%204%26%205%20%26%206%5C%5C%207%26%208%26%209%20%5Cend%7Bbmatrix%7D https://latex.csdn.net/eq?A%3D%5Cbegin%7Bbmatrix%7D%201%20%26%204%26%207%5C%5C%202%26%205%26%208%5C%5C%203%26%206%20%26%209%20%5Cend%7Bbmatrix%7D