用指针实现一个能对任意 mxn 阶矩阵进行转置的功能,举例:实现对3行4列矩阵的转置
时间: 2024-09-22 14:03:44 浏览: 39
在C++中,可以使用二维指针来实现一个通用的矩阵转置功能。这里是一个简单的示例,展示了如何通过两个一维指针(分别指向原矩阵的行和新矩阵的列)来交换元素,完成转置操作:
```cpp
#include <iostream>
// 定义一个函数接受指向矩阵开头的指针,并返回转置后的矩阵
void transpose(int** matrix, int rows, int cols) {
int* transposed = new int[rows]; // 创建一个新的一维数组用于存储转置后的结果
for (int i = 0; i < rows; ++i) {
for (int j = 0; j < cols; ++j) {
transposed[j] = matrix[i][cols - j]; // 交换行和列的元素
}
}
// 输出转置后的矩阵
for (int i = 0; i < rows; ++i) {
for (int j = 0; j < cols; ++j) {
std::cout << transposed[j] << " ";
}
std::cout << "\n";
}
delete[] transposed; // 释放内存
}
int main() {
int matrix[3][4] = { {1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12} };
int rows = sizeof(matrix) / sizeof(matrix[0]);
int cols = sizeof(matrix[0]) / sizeof(matrix[0][0]);
transpose(matrix, rows, cols); // 转置矩阵
return 0;
}
```
这个例子中,对于3行4列的矩阵,我们首先创建一个长度为3的一维数组`transposed`来保存转置后的值。然后遍历原矩阵,每次访问一行,将该行的最后一个元素复制到`transposed`对应列的位置。最后打印出转置后的矩阵。
阅读全文