Transpose Matrix

This algorithm finds the transpose of a given matrix. The transpose of a given matrix is formed by interchanging the rows and columns of a matrix.

```									```/*****Please include following header files*****/
// stdlib.h
/***********************************************/

typedef struct {
int** Matrix;
int Rows;
int Columns;
} Matrix;

int** CreateMatrix(int rowCount, int colCount) {
int** matrix = (int**)malloc(sizeof(int*) * rowCount);

for (int i = 0; i < rowCount; ++i) {
matrix[i] = (int*)malloc(sizeof(int) * colCount);
}

return matrix;
}

Matrix TransposeMatrix(Matrix matrix) {
int** transpose = CreateMatrix(matrix.Columns, matrix.Rows);

for (int i = 0; i < matrix.Rows; ++i)
for (int j = 0; j < matrix.Columns; ++j)
transpose[j][i] = matrix.Matrix[i][j];

return{ transpose, matrix.Columns, matrix.Rows };
}```
```

Example

```									```int** m1 = CreateMatrix(2, 3);
m1[0][0] = 1;
m1[0][1] = 2;
m1[0][2] = 3;
m1[1][0] = 4;
m1[1][1] = 5;
m1[1][2] = 6;

Matrix matrix = { m1, 2, 3 };
Matrix transpose = TransposeMatrix(matrix);```
```

Output

```									```[0][0] = 1
[0][1] = 4
[1][0] = 2
[1][1] = 5
[2][0] = 3
[2][1] = 6```
```