矩阵转置核心代码:
void swap(int *a,int *b)
{
int t=*a;
*a=*b;
*b=t;
}
void mat(int num,int **matrix)
{
for(int i=0;i<num;i++)
{
{
for(int j=i;j<num;j++)
{
swap(&matrix[i][j],&matrix[j][i]);
}
}
}
}
练习题:
主要难点在于二维指针,行和列多加注意就可以了!!!
代码:
/**
* Return an array of arrays of size *returnSize.
* The sizes of the arrays are returned as *returnColumnSizes array.
* Note: Both returned array and *columnSizes array must be malloced, assume caller calls free().
*/
int** transpose(int** matrix, int matrixSize, int* matrixColSize, int* returnSize, int** returnColumnSizes){
int num1=matrixColSize[0];
int num2=matrixSize;
int **ans=(int **)malloc(sizeof(int *)*num1);
*returnColumnSizes=(int *)malloc(sizeof(int )*num1);
*returnSize=num1;
for(int i=0;i<num1;i++)
{
ans[i]=(int *)malloc(sizeof(int)*num2);
(*returnColumnSizes)[i]=num2;
}
for(int i=0;i<num1;i++)
{
for(int j=0;j<num2;j++)
{
ans[i][j]=matrix[j][i];
}
}
return ans;
}