矩阵的转置

对于的矩阵,使用两个指针变量,可以方便实现(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矩阵转置

}

运行结果

相关推荐
苦藤新鸡13 小时前
51.课程表(拓扑排序)-leetcode207
数据结构·算法·leetcode·bfs
senijusene13 小时前
数据结构与算法:栈的基本概念,顺序栈与链式栈的详细实现
c语言·开发语言·算法·链表
naruto_lnq13 小时前
分布式日志系统实现
开发语言·c++·算法
啊我不会诶13 小时前
Codeforces Round 1071 (Div. 3) vp补题
开发语言·学习·算法
格林威13 小时前
Baumer相机金属弹簧圈数自动计数:用于来料快速检验的 6 个核心算法,附 OpenCV+Halcon 实战代码!
人工智能·数码相机·opencv·算法·计算机视觉·视觉检测·堡盟相机
一起努力啊~14 小时前
算法刷题--栈和队列
开发语言·算法
VT.馒头14 小时前
【力扣】2694. 事件发射器
前端·javascript·算法·leetcode·职场和发展·typescript
星火开发设计14 小时前
命名空间 namespace:解决命名冲突的利器
c语言·开发语言·c++·学习·算法·知识
知无不研14 小时前
选择排序算法
数据结构·算法·排序算法·选择排序