注意:在数据结构的考研题目中出现的矩阵第一个元素有的为a0,0,有的为a1,1,大家在做题的时候要注意区分,因为下标规则不同可能会有不同的结果。而考题中存放在C语言二维数组中的矩阵,第一个元素一定是a[0][0]。
Amn即为一个矩阵的逻辑表示。在C语言中,可以用一个二维数组来存储(假设元素类型为整型):
其中,m和n必须为常量,或者预先定义的宏常量。宏常量的定义在绪论中已经讲过,要用到#define关键字。因此,完整的定义语句如下(假设m常量值为4,n常量值为5):
下面以二维数组为例,讨论多维数组的基本运算,并且以矩阵这个名字来称呼二维数组。
1.矩阵的转置
对于一个m×n的矩阵A[m][n],其转置矩阵是一个n×m的矩阵B[n][m],且B[i][j]=A[j][i],0≤i<n,0≤j<m,具体实现代码如下:(www.daowen.com)
说明:这里为了强调转置算法的核心部分,略去了一些非法输入的判定操作,并且为了方便处理,将二维数组统一设置成maxSize×maxSize的尺寸,其中maxSize是可能出现的尺寸最大值,用参数m和n来控制数组的实际尺寸,后续讲到的其他操作也做类似处理。
2.矩阵相加
两个尺寸均为m×n的矩阵相加后得到的依然是一个尺寸为m×n的矩阵,相加规则为ci,j=ai,j+bi,j,其中ci,j为结果矩阵C中的元素,ai,j和bi,j为操作数矩阵A和B中的元素,可见矩阵相加操作为两矩阵对应位置上的元素逐一相加。具体实现代码如下:
3.矩阵相乘
矩阵相乘也是一种常用的矩阵运算。假设两矩阵A与B相乘,结果为C,C中第i行第j列上的元素为A中第i行的元素与B中第j列的元素对应相乘并且求和的结果(两向量的点乘)。由上述介绍可知,A和B两矩阵可以相乘的条件是,A的列数必须等于B的行数。算法实现如下,其中A的尺寸为m×n,B的尺寸为n×k。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。