用指针实现二维矩阵转置
时间: 2024-06-18 21:04:24 浏览: 112
用指针实现二维矩阵转置可以通过两种方式来实现:一种是直接在原数组上进行操作,另一种是创建一个新的数组来存储转置后的矩阵。
以下是在原数组上进行操作的实现方式:
```c++
void transpose(int *matrix, int n) {
for (int i = 0; i < n; i++) {
for (int j = i + 1; j < n; j++) {
// 交换matrix[i][j]和matrix[j][i]的值
int temp = *(matrix + i * n + j);
*(matrix + i * n + j) = *(matrix + j * n + i);
*(matrix + j * n + i) = temp;
}
}
}
```
该函数中的参数`matrix`是一个指向二维数组首元素的指针,`n`是矩阵的行数和列数。在函数中,使用两个for循环遍历矩阵的上三角(即`i<j`的部分),并对于每个元素,交换它和对应位置上的元素的值。
如果你想创建一个新的数组来存储转置后的矩阵,可以使用以下代码:
```c++
int** transpose(int **matrix, int m, int n) {
int **transposedMatrix = new int*[n];
for (int i = 0; i < n; i++) {
transposedMatrix[i] = new int[m];
for (int j = 0; j < m; j++) {
transposedMatrix[i][j] = matrix[j][i];
}
}
return transposedMatrix;
}
```
该函数中的参数`matrix`是一个二维数组,`m`和`n`分别是矩阵的行数和列数。函数首先创建一个`n*m`的新数组`transposedMatrix`来存储转置后的矩阵。然后,使用两个for循环遍历原矩阵中每个元素,并将其放置到新矩阵中对应位置上。
阅读全文