使用动态内存分配实现 3×3 矩阵转置函数,使用动态内存维护 3×3 矩阵,使用指针实现函数的功能。
时间: 2024-05-06 22:16:14 浏览: 124
学习二维动态数组指针做矩阵运算的方法
下面是使用动态内存分配实现的3x3矩阵转置函数的示例代码:
```c++
#include <iostream>
using namespace std;
void transpose(int** matrix, int row, int col) {
int** temp = new int*[col];
for (int i = 0; i < col; i++) {
temp[i] = new int[row];
}
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
temp[j][i] = matrix[i][j];
}
}
for (int i = 0; i < row; i++) {
delete[] matrix[i];
}
delete[] matrix;
matrix = temp;
}
int main() {
int row = 3;
int col = 3;
// Allocate memory for the matrix
int** matrix = new int*[row];
for (int i = 0; i < row; i++) {
matrix[i] = new int[col];
}
// Initialize the matrix
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
matrix[i][j] = i * col + j;
}
}
// Print the original matrix
cout << "Original Matrix:" << endl;
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
cout << matrix[i][j] << " ";
}
cout << endl;
}
// Transpose the matrix
transpose(matrix, row, col);
// Print the transposed matrix
cout << "Transposed Matrix:" << endl;
for (int i = 0; i < col; i++) {
for (int j = 0; j < row; j++) {
cout << matrix[i][j] << " ";
}
cout << endl;
}
// Free memory
for (int i = 0; i < col; i++) {
delete[] matrix[i];
}
delete[] matrix;
return 0;
}
```
这个程序首先分配了一个3x3的矩阵,然后使用两个嵌套的 for 循环初始化了矩阵。然后,它调用了一个名为 transpose 的函数,该函数接受一个指向矩阵的指针,以及矩阵的行数和列数。在 transpose 函数中,程序首先分配了一个新的数组,然后使用两个嵌套的 for 循环将原始矩阵的元素复制到新的数组中。最后,它释放了原始矩阵的内存,并将新的数组指针赋给原始矩阵指针。最后,程序输出了原始矩阵和转置后的矩阵,并释放了内存。
阅读全文